[POO] Changes (#69)
[POO] ATP1 added --> Exercise made in Codecheck [POO] Removed tp_codecheck --> Didn't really have too much there and not worth keeping around [POO] Code reformat --> Optimized and reformated code for all directories in source
This commit is contained in:
parent
08c43232dd
commit
ce34f4f537
|
@ -1,4 +1,5 @@
|
||||||
package aula01;
|
package aula01;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class KmToMiles {
|
public class KmToMiles {
|
||||||
|
|
|
@ -9,7 +9,7 @@ public class PescadaDeRaboNaBoca {
|
||||||
public static void recursivoSimples(int x) {
|
public static void recursivoSimples(int x) {
|
||||||
System.out.println(x);
|
System.out.println(x);
|
||||||
x--;
|
x--;
|
||||||
if (x>0)
|
if (x > 0)
|
||||||
recursivoSimples(x);
|
recursivoSimples(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
package aula01;
|
package aula01;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|
|
@ -5,7 +5,7 @@ public class StringExample {
|
||||||
String s1 = "programar em Java";
|
String s1 = "programar em Java";
|
||||||
System.out.println(s1.split(" ")[0] + " é engraçado!! :)");
|
System.out.println(s1.split(" ")[0] + " é engraçado!! :)");
|
||||||
System.out.println("É giro " + s1);
|
System.out.println("É giro " + s1);
|
||||||
for (int i=0; i<14; i++)
|
for (int i = 0; i < 14; i++)
|
||||||
System.out.println("vamos " + s1 + " na aula " + i);
|
System.out.println("vamos " + s1 + " na aula " + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,7 +9,7 @@ public class CelciusToFahrenheit {
|
||||||
System.out.print("ºC? ");
|
System.out.print("ºC? ");
|
||||||
Scanner sin = new Scanner(System.in);
|
Scanner sin = new Scanner(System.in);
|
||||||
double celcius = sin.nextDouble();
|
double celcius = sin.nextDouble();
|
||||||
double fahrenheit = 1.8*celcius+32;
|
double fahrenheit = 1.8 * celcius + 32;
|
||||||
System.out.printf("%.2fºC = %.2fºF\n", celcius, fahrenheit);
|
System.out.printf("%.2fºC = %.2fºF\n", celcius, fahrenheit);
|
||||||
|
|
||||||
sin.close();
|
sin.close();
|
||||||
|
|
|
@ -5,7 +5,7 @@ import java.util.Scanner;
|
||||||
// Solução do exercício 9
|
// Solução do exercício 9
|
||||||
|
|
||||||
public class Countdown {
|
public class Countdown {
|
||||||
public static void main(String[] args){
|
public static void main(String[] args) {
|
||||||
Scanner sin = new Scanner(System.in);
|
Scanner sin = new Scanner(System.in);
|
||||||
|
|
||||||
System.out.print("N? ");
|
System.out.print("N? ");
|
||||||
|
@ -13,7 +13,7 @@ public class Countdown {
|
||||||
for (int i = n; i >= 0; i--) {
|
for (int i = n; i >= 0; i--) {
|
||||||
// If the statement before '?' is true then the expression before the ':' is used, else the expression after the ':' is used.
|
// If the statement before '?' is true then the expression before the ':' is used, else the expression after the ':' is used.
|
||||||
// In python: i + "\n" if i%10 == 0 else i + ","
|
// In python: i + "\n" if i%10 == 0 else i + ","
|
||||||
System.out.print(i%10 == 0 ? i + "\n" : i + ",");
|
System.out.print(i % 10 == 0 ? i + "\n" : i + ",");
|
||||||
}
|
}
|
||||||
|
|
||||||
sin.close();
|
sin.close();
|
||||||
|
|
|
@ -2,6 +2,7 @@ package aula02;
|
||||||
|
|
||||||
// Código da package utils disponível em
|
// Código da package utils disponível em
|
||||||
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
||||||
|
|
||||||
import utils.UserInput;
|
import utils.UserInput;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
@ -9,7 +10,7 @@ import java.util.Scanner;
|
||||||
// Solução do exercício 7
|
// Solução do exercício 7
|
||||||
|
|
||||||
public class DistanceBetweenPoints {
|
public class DistanceBetweenPoints {
|
||||||
public static void main(String[] args){
|
public static void main(String[] args) {
|
||||||
Scanner sin = new Scanner(System.in);
|
Scanner sin = new Scanner(System.in);
|
||||||
|
|
||||||
String[] p1 = UserInput.input(sin, "Coordenadas do ponto 1 (separadas por ','): ").split(",");
|
String[] p1 = UserInput.input(sin, "Coordenadas do ponto 1 (separadas por ','): ").split(",");
|
||||||
|
|
|
@ -2,6 +2,7 @@ package aula02;
|
||||||
|
|
||||||
// Código da package utils disponível em
|
// Código da package utils disponível em
|
||||||
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
||||||
|
|
||||||
import utils.UserInput;
|
import utils.UserInput;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package aula02;
|
||||||
|
|
||||||
// Código da package utils disponível em
|
// Código da package utils disponível em
|
||||||
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
||||||
|
|
||||||
import utils.UserInput;
|
import utils.UserInput;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
@ -15,7 +16,7 @@ public class Investment {
|
||||||
double initialWallet = UserInput.getPositiveNumber(sin);
|
double initialWallet = UserInput.getPositiveNumber(sin);
|
||||||
System.out.print("Taxa de juro mensal (%)? ");
|
System.out.print("Taxa de juro mensal (%)? ");
|
||||||
double tax = sin.nextDouble();
|
double tax = sin.nextDouble();
|
||||||
double finalWallet = initialWallet * Math.pow(1 + tax/100, 3);
|
double finalWallet = initialWallet * Math.pow(1 + tax / 100, 3);
|
||||||
System.out.printf("O saldo final será de %.2f euros\n", finalWallet);
|
System.out.printf("O saldo final será de %.2f euros\n", finalWallet);
|
||||||
|
|
||||||
sin.close();
|
sin.close();
|
||||||
|
|
|
@ -2,6 +2,7 @@ package aula02;
|
||||||
|
|
||||||
// Código da package utils disponível em
|
// Código da package utils disponível em
|
||||||
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
||||||
|
|
||||||
import utils.UserInput;
|
import utils.UserInput;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package aula02;
|
||||||
|
|
||||||
// Código da package utils disponível em
|
// Código da package utils disponível em
|
||||||
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
||||||
|
|
||||||
import utils.UserInput;
|
import utils.UserInput;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
@ -9,7 +10,7 @@ import java.util.Scanner;
|
||||||
// Solução do exercício 8
|
// Solução do exercício 8
|
||||||
|
|
||||||
public class PythagoreanTheorem {
|
public class PythagoreanTheorem {
|
||||||
public static void main(String[] args){
|
public static void main(String[] args) {
|
||||||
Scanner sin = new Scanner(System.in);
|
Scanner sin = new Scanner(System.in);
|
||||||
|
|
||||||
System.out.println("Cateto A:");
|
System.out.println("Cateto A:");
|
||||||
|
|
|
@ -5,7 +5,7 @@ import java.util.Scanner;
|
||||||
// Solução do exercício 10
|
// Solução do exercício 10
|
||||||
|
|
||||||
public class RealNumbers {
|
public class RealNumbers {
|
||||||
public static void main(String[] args){
|
public static void main(String[] args) {
|
||||||
Scanner sin = new Scanner(System.in);
|
Scanner sin = new Scanner(System.in);
|
||||||
|
|
||||||
int readNumbers = 1;
|
int readNumbers = 1;
|
||||||
|
@ -27,7 +27,7 @@ public class RealNumbers {
|
||||||
++readNumbers;
|
++readNumbers;
|
||||||
} while (n != first);
|
} while (n != first);
|
||||||
|
|
||||||
System.out.printf("Valor máximo: %f\nValor mínimo: %f\nMédia: %f\nTotal: %f\n", max, min, (float) sum/readNumbers, sum);
|
System.out.printf("Valor máximo: %f\nValor mínimo: %f\nMédia: %f\nTotal: %f\n", max, min, (float) sum / readNumbers, sum);
|
||||||
|
|
||||||
sin.close();
|
sin.close();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package aula02;
|
||||||
|
|
||||||
// Código da package utils disponível em
|
// Código da package utils disponível em
|
||||||
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
// https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/src/utils
|
||||||
|
|
||||||
import utils.UserInput;
|
import utils.UserInput;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
@ -9,7 +10,7 @@ import java.util.Scanner;
|
||||||
// Solução do exercício 6
|
// Solução do exercício 6
|
||||||
|
|
||||||
public class SecsToHMS {
|
public class SecsToHMS {
|
||||||
public static void main(String[] args){
|
public static void main(String[] args) {
|
||||||
Scanner sin = new Scanner(System.in);
|
Scanner sin = new Scanner(System.in);
|
||||||
|
|
||||||
System.out.println("Introduza os segundos totais: ");
|
System.out.println("Introduza os segundos totais: ");
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class Calendar {
|
||||||
|
|
||||||
private static void printCalendar(int[] data, int monthDays) {
|
private static void printCalendar(int[] data, int monthDays) {
|
||||||
String[] monthNames = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"};
|
String[] monthNames = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"};
|
||||||
System.out.printf("\n%15s %d\n", monthNames[data[0]-1], data[1]);
|
System.out.printf("\n%15s %d\n", monthNames[data[0] - 1], data[1]);
|
||||||
System.out.println("Dom Seg Ter Qua Qui Sex Sab");
|
System.out.println("Dom Seg Ter Qua Qui Sex Sab");
|
||||||
|
|
||||||
if (data[2] != 7)
|
if (data[2] != 7)
|
||||||
|
|
|
@ -15,9 +15,9 @@ public class Grades {
|
||||||
Student[] students = new Student[studentCount];
|
Student[] students = new Student[studentCount];
|
||||||
|
|
||||||
for (int i = 0; i < studentCount; i++) {
|
for (int i = 0; i < studentCount; i++) {
|
||||||
System.out.printf("Nota teórica do aluno %d: ", i+1);
|
System.out.printf("Nota teórica do aluno %d: ", i + 1);
|
||||||
double notaT = UserInput.getNumberBetween(sin, 0, 20);
|
double notaT = UserInput.getNumberBetween(sin, 0, 20);
|
||||||
System.out.printf("Nota prática do aluno %d: ", i+1);
|
System.out.printf("Nota prática do aluno %d: ", i + 1);
|
||||||
double notaP = UserInput.getNumberBetween(sin, 0, 20);
|
double notaP = UserInput.getNumberBetween(sin, 0, 20);
|
||||||
students[i] = new Student(notaT, notaP);
|
students[i] = new Student(notaT, notaP);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,8 @@ public class Investment {
|
||||||
double tax = UserInput.getNumberBetween(sin, 0, 5);
|
double tax = UserInput.getNumberBetween(sin, 0, 5);
|
||||||
|
|
||||||
for (int i = 1; i <= 12; i++) {
|
for (int i = 1; i <= 12; i++) {
|
||||||
investment *= 1+tax/100;
|
investment *= 1 + tax / 100;
|
||||||
System.out.printf("Investimento em %d %s: %.2f\n", i, i==1?"mês":"meses", investment);
|
System.out.printf("Investimento em %d %s: %.2f\n", i, i == 1 ? "mês" : "meses", investment);
|
||||||
}
|
}
|
||||||
|
|
||||||
sin.close();
|
sin.close();
|
||||||
|
|
|
@ -11,7 +11,7 @@ public class StringExtras {
|
||||||
String str = sin.nextLine();
|
String str = sin.nextLine();
|
||||||
|
|
||||||
System.out.println("Frase convertida para minúsculas: " + str.toLowerCase());
|
System.out.println("Frase convertida para minúsculas: " + str.toLowerCase());
|
||||||
System.out.println("Último caracter da frase: " + str.substring(str.length()-1));
|
System.out.println("Último caracter da frase: " + str.substring(str.length() - 1));
|
||||||
System.out.println("Os 3 primeiros caracteres: " + str.substring(0, 3));
|
System.out.println("Os 3 primeiros caracteres: " + str.substring(0, 3));
|
||||||
System.out.printf("Número de digitos na frase: %d\n", StringMethods.countDigits(str));
|
System.out.printf("Número de digitos na frase: %d\n", StringMethods.countDigits(str));
|
||||||
System.out.printf("Número de espaços na frase: %d\n", StringMethods.countSpaces(str));
|
System.out.printf("Número de espaços na frase: %d\n", StringMethods.countSpaces(str));
|
||||||
|
|
|
@ -23,7 +23,7 @@ public class CarDemo {
|
||||||
System.out.println("Dados mal formatados. Tente novamente.");
|
System.out.println("Dados mal formatados. Tente novamente.");
|
||||||
} else {
|
} else {
|
||||||
String model = String.join(" ", Arrays.stream(parts, 1, parts.length - 2).toArray(String[]::new));
|
String model = String.join(" ", Arrays.stream(parts, 1, parts.length - 2).toArray(String[]::new));
|
||||||
cars[i] = new Car(parts[0], model, Integer.parseInt(parts[parts.length-2]), Integer.parseInt(parts[parts.length-1]));
|
cars[i] = new Car(parts[0], model, Integer.parseInt(parts[parts.length - 2]), Integer.parseInt(parts[parts.length - 1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,8 +33,8 @@ public class CarDemo {
|
||||||
static boolean validateData(String[] parts) {
|
static boolean validateData(String[] parts) {
|
||||||
if (parts.length < 4) return false;
|
if (parts.length < 4) return false;
|
||||||
try {
|
try {
|
||||||
Integer.parseInt(parts[parts.length-1]);
|
Integer.parseInt(parts[parts.length - 1]);
|
||||||
if (String.format("%d", Integer.parseInt(parts[parts.length-2])).length() != 4) return false;
|
if (String.format("%d", Integer.parseInt(parts[parts.length - 2])).length() != 4) return false;
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ public class CarDemo {
|
||||||
|
|
||||||
int numCars = registerCars(cars);
|
int numCars = registerCars(cars);
|
||||||
|
|
||||||
if (numCars>0) {
|
if (numCars > 0) {
|
||||||
listCars(cars);
|
listCars(cars);
|
||||||
registerTrips(cars, numCars);
|
registerTrips(cars, numCars);
|
||||||
listCars(cars);
|
listCars(cars);
|
||||||
|
|
|
@ -48,7 +48,7 @@ class Triangle {
|
||||||
public Triangle(double side1, double side2, double side3) {
|
public Triangle(double side1, double side2, double side3) {
|
||||||
if (!(side1 > 0 && side2 > 0 && side3 > 0))
|
if (!(side1 > 0 && side2 > 0 && side3 > 0))
|
||||||
throw new IllegalArgumentException("Sizes must be positive.");
|
throw new IllegalArgumentException("Sizes must be positive.");
|
||||||
if(!(side1 < side2 + side3 && side2 < side1 + side3 && side3 < side1 + side2))
|
if (!(side1 < side2 + side3 && side2 < side1 + side3 && side3 < side1 + side2))
|
||||||
throw new IllegalArgumentException("Triangle cannot be created with those sides.");
|
throw new IllegalArgumentException("Triangle cannot be created with those sides.");
|
||||||
this.side1 = side1;
|
this.side1 = side1;
|
||||||
this.side2 = side2;
|
this.side2 = side2;
|
||||||
|
@ -56,13 +56,13 @@ class Triangle {
|
||||||
}
|
}
|
||||||
|
|
||||||
public double[] getSides() {
|
public double[] getSides() {
|
||||||
return new double[] {this.side1, this.side2, this.side3};
|
return new double[]{this.side1, this.side2, this.side3};
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSides(double side1, double side2, double side3) {
|
public void setSides(double side1, double side2, double side3) {
|
||||||
if (!(side1 > 0 && side2 > 0 && side3 > 0))
|
if (!(side1 > 0 && side2 > 0 && side3 > 0))
|
||||||
throw new IllegalArgumentException("Sizes must be positive.");
|
throw new IllegalArgumentException("Sizes must be positive.");
|
||||||
if(!(side1 < side2 + side3 && side2 < side1 + side3 && side3 < side1 + side2))
|
if (!(side1 < side2 + side3 && side2 < side1 + side3 && side3 < side1 + side2))
|
||||||
throw new IllegalArgumentException("Triangle cannot be created with those sides.");
|
throw new IllegalArgumentException("Triangle cannot be created with those sides.");
|
||||||
this.side1 = side1;
|
this.side1 = side1;
|
||||||
this.side2 = side2;
|
this.side2 = side2;
|
||||||
|
@ -99,7 +99,7 @@ class Rectangle {
|
||||||
}
|
}
|
||||||
|
|
||||||
public double[] getSides() {
|
public double[] getSides() {
|
||||||
return new double[] {this.side1, this.side2};
|
return new double[]{this.side1, this.side2};
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSides(double side1, double side2) {
|
public void setSides(double side1, double side2) {
|
||||||
|
|
|
@ -32,9 +32,9 @@ public class SimpleCarDemo {
|
||||||
listCars(cars);
|
listCars(cars);
|
||||||
|
|
||||||
// Adicionar 10 viagens geradas aleatoriamente
|
// Adicionar 10 viagens geradas aleatoriamente
|
||||||
for (int i=0; i<10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
int j = (int)Math.round(Math.random()*2); // escolhe um dos 3 carros
|
int j = (int) Math.round(Math.random() * 2); // escolhe um dos 3 carros
|
||||||
int kms = (int)Math.round(Math.random()*1000); // viagem até 1000 kms
|
int kms = (int) Math.round(Math.random() * 1000); // viagem até 1000 kms
|
||||||
System.out.printf("Carro %d viajou %d quilómetros.\n", j, kms);
|
System.out.printf("Carro %d viajou %d quilómetros.\n", j, kms);
|
||||||
|
|
||||||
// TODO: adicionar viagem ao carro j
|
// TODO: adicionar viagem ao carro j
|
||||||
|
|
|
@ -103,9 +103,11 @@ class Property {
|
||||||
public int getId() {
|
public int getId() {
|
||||||
return this.id;
|
return this.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAvailable() {
|
public boolean isAvailable() {
|
||||||
return this.availability;
|
return this.availability;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAvailability(boolean availability) {
|
public void setAvailability(boolean availability) {
|
||||||
this.availability = availability;
|
this.availability = availability;
|
||||||
}
|
}
|
||||||
|
@ -116,7 +118,7 @@ class Property {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DateYMD[] getAuction() {
|
public DateYMD[] getAuction() {
|
||||||
return new DateYMD[] {this.auctionBegin, this.auctionEnd};
|
return new DateYMD[]{this.auctionBegin, this.auctionEnd};
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAuction() {
|
public boolean isAuction() {
|
||||||
|
|
|
@ -33,12 +33,12 @@ public class Calendar {
|
||||||
day -= 7;
|
day -= 7;
|
||||||
day++;
|
day++;
|
||||||
}
|
}
|
||||||
return day == 7 ? 7 : day%7;
|
return day == 7 ? 7 : day % 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void printMonth(int month) {
|
public void printMonth(int month) {
|
||||||
String[] monthNames = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"};
|
String[] monthNames = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"};
|
||||||
System.out.printf("\n%15s %d\n", monthNames[month-1], year);
|
System.out.printf("\n%15s %d\n", monthNames[month - 1], year);
|
||||||
System.out.println("Dom Seg Ter Qua Qui Sex Sab");
|
System.out.println("Dom Seg Ter Qua Qui Sex Sab");
|
||||||
|
|
||||||
int firstWeekday = this.firstWeekdayOfMonth(month);
|
int firstWeekday = this.firstWeekdayOfMonth(month);
|
||||||
|
|
|
@ -15,6 +15,27 @@ public class DateYMD {
|
||||||
this.year = year;
|
this.year = year;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static boolean validMonth(int month) {
|
||||||
|
return month >= 1 && month <= 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int monthDays(int month, int year) {
|
||||||
|
if (!validMonth(month))
|
||||||
|
return -1;
|
||||||
|
int[] daysPerMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
||||||
|
if (month == 2 && isLeapYear(year))
|
||||||
|
return 29;
|
||||||
|
return daysPerMonth[month - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
static boolean isLeapYear(int year) {
|
||||||
|
return year % 100 == 0 ? year % 400 == 0 : year % 4 == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static boolean validDate(int day, int month, int year) {
|
||||||
|
return day >= 1 && day <= monthDays(month, year);
|
||||||
|
}
|
||||||
|
|
||||||
public void set(int day, int month, int year) {
|
public void set(int day, int month, int year) {
|
||||||
if (!validDate(day, month, year))
|
if (!validDate(day, month, year))
|
||||||
throw new IllegalArgumentException("Invalid date");
|
throw new IllegalArgumentException("Invalid date");
|
||||||
|
@ -73,26 +94,6 @@ public class DateYMD {
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%04d-%02d-%02d", this.year, this.month, this.day);
|
return String.format("%04d-%02d-%02d", this.year, this.month, this.day);
|
||||||
}
|
}
|
||||||
static boolean validMonth(int month) {
|
|
||||||
return month >= 1 && month <= 12;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int monthDays(int month, int year) {
|
|
||||||
if (!validMonth(month))
|
|
||||||
return -1;
|
|
||||||
int[] daysPerMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
|
||||||
if (month == 2 && isLeapYear(year))
|
|
||||||
return 29;
|
|
||||||
return daysPerMonth[month - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
static boolean isLeapYear(int year) {
|
|
||||||
return year % 100 == 0 ? year % 400 == 0 : year % 4 == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static boolean validDate(int day, int month, int year) {
|
|
||||||
return day >= 1 && day <= monthDays(month, year);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class TestDateYMD {
|
class TestDateYMD {
|
||||||
|
|
|
@ -2,7 +2,7 @@ package aula06.ex1;
|
||||||
|
|
||||||
import utils.DateYMD;
|
import utils.DateYMD;
|
||||||
|
|
||||||
public class Bolser extends Student{
|
public class Bolser extends Student {
|
||||||
private Professor supervisor;
|
private Professor supervisor;
|
||||||
private double monthlyAmount;
|
private double monthlyAmount;
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ public class Bolser extends Student{
|
||||||
public Professor getSupervisor() {
|
public Professor getSupervisor() {
|
||||||
return this.supervisor;
|
return this.supervisor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupervisor(Professor supervisor) {
|
public void setSupervisor(Professor supervisor) {
|
||||||
if (supervisor == null) {
|
if (supervisor == null) {
|
||||||
throw new IllegalArgumentException("Supervisor cannot be null");
|
throw new IllegalArgumentException("Supervisor cannot be null");
|
||||||
|
@ -29,6 +30,7 @@ public class Bolser extends Student{
|
||||||
public double getMonthlyAmount() {
|
public double getMonthlyAmount() {
|
||||||
return this.monthlyAmount;
|
return this.monthlyAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMonthlyAmount(double monthlyAmount) {
|
public void setMonthlyAmount(double monthlyAmount) {
|
||||||
if (monthlyAmount < 0) {
|
if (monthlyAmount < 0) {
|
||||||
throw new IllegalArgumentException("Monthly amount cannot be negative");
|
throw new IllegalArgumentException("Monthly amount cannot be negative");
|
||||||
|
|
|
@ -18,6 +18,7 @@ public class Person {
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setName(String name) {
|
public void setName(String name) {
|
||||||
if (name == null || name.isEmpty())
|
if (name == null || name.isEmpty())
|
||||||
throw new IllegalArgumentException("Name cannot be null or empty");
|
throw new IllegalArgumentException("Name cannot be null or empty");
|
||||||
|
@ -27,6 +28,7 @@ public class Person {
|
||||||
public int getCc() {
|
public int getCc() {
|
||||||
return this.cc;
|
return this.cc;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCc(int cc) {
|
public void setCc(int cc) {
|
||||||
if (String.valueOf(cc).length() != 8)
|
if (String.valueOf(cc).length() != 8)
|
||||||
throw new IllegalArgumentException("CC must have 8 digits");
|
throw new IllegalArgumentException("CC must have 8 digits");
|
||||||
|
@ -36,6 +38,7 @@ public class Person {
|
||||||
public DateYMD getBirthDate() {
|
public DateYMD getBirthDate() {
|
||||||
return this.birthDate;
|
return this.birthDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBirthDate(DateYMD birthDate) {
|
public void setBirthDate(DateYMD birthDate) {
|
||||||
if (birthDate == null)
|
if (birthDate == null)
|
||||||
throw new IllegalArgumentException("Birth date cannot be null");
|
throw new IllegalArgumentException("Birth date cannot be null");
|
||||||
|
|
|
@ -8,13 +8,13 @@ public class PersonTest {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Scanner sin = new Scanner(System.in);
|
Scanner sin = new Scanner(System.in);
|
||||||
|
|
||||||
Student al = new Student ("Andreia Melo", 98556781,new DateYMD(18, 7, 1990), new DateYMD(1, 9, 2018));
|
Student al = new Student("Andreia Melo", 98556781, new DateYMD(18, 7, 1990), new DateYMD(1, 9, 2018));
|
||||||
Professor p1 = new Professor("Jorge Almeida", 34672215, new DateYMD(13, 3, 1967), "Associado", "Informática");
|
Professor p1 = new Professor("Jorge Almeida", 34672215, new DateYMD(13, 3, 1967), "Associado", "Informática");
|
||||||
Bolser bls = new Bolser ("Igor Santos", 89765431, new DateYMD(11, 5, 1985), p1, 900);
|
Bolser bls = new Bolser("Igor Santos", 89765431, new DateYMD(11, 5, 1985), p1, 900);
|
||||||
bls.setMonthlyAmount(1050);
|
bls.setMonthlyAmount(1050);
|
||||||
System.out.println("Student:"+ al.getName());
|
System.out.println("Student:" + al.getName());
|
||||||
System.out.println(al);
|
System.out.println(al);
|
||||||
System.out.println("Bolser:"+ bls.getName() + ", NMec: " + bls.getNMec() + ", Bolsa:" + bls.getMonthlyAmount()+ ", Orientador:" + bls.getSupervisor());
|
System.out.println("Bolser:" + bls.getName() + ", NMec: " + bls.getNMec() + ", Bolsa:" + bls.getMonthlyAmount() + ", Orientador:" + bls.getSupervisor());
|
||||||
System.out.println(bls);
|
System.out.println(bls);
|
||||||
|
|
||||||
sin.close();
|
sin.close();
|
||||||
|
|
|
@ -15,6 +15,7 @@ public class Professor extends Person {
|
||||||
public String getCategory() {
|
public String getCategory() {
|
||||||
return this.category;
|
return this.category;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCategory(String category) {
|
public void setCategory(String category) {
|
||||||
if (category == null || category.isEmpty())
|
if (category == null || category.isEmpty())
|
||||||
throw new IllegalArgumentException("Category cannot be null or empty");
|
throw new IllegalArgumentException("Category cannot be null or empty");
|
||||||
|
@ -26,6 +27,7 @@ public class Professor extends Person {
|
||||||
public String getDepartment() {
|
public String getDepartment() {
|
||||||
return this.department;
|
return this.department;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDepartment(String department) {
|
public void setDepartment(String department) {
|
||||||
if (department == null || department.isEmpty())
|
if (department == null || department.isEmpty())
|
||||||
throw new IllegalArgumentException("Department cannot be null or empty");
|
throw new IllegalArgumentException("Department cannot be null or empty");
|
||||||
|
|
|
@ -5,9 +5,9 @@ import utils.DateYMD;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
public class Student extends Person {
|
public class Student extends Person {
|
||||||
|
public static int currentNMec = 100;
|
||||||
private DateYMD registrationDate;
|
private DateYMD registrationDate;
|
||||||
private int nMec;
|
private int nMec;
|
||||||
public static int currentNMec = 100;
|
|
||||||
|
|
||||||
public Student(String name, int cc, DateYMD birthDate, DateYMD registrationDate) {
|
public Student(String name, int cc, DateYMD birthDate, DateYMD registrationDate) {
|
||||||
super(name, cc, birthDate);
|
super(name, cc, birthDate);
|
||||||
|
@ -22,6 +22,7 @@ public class Student extends Person {
|
||||||
public int getNMec() {
|
public int getNMec() {
|
||||||
return this.nMec;
|
return this.nMec;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNMec(int nMec) {
|
public void setNMec(int nMec) {
|
||||||
this.nMec = nMec;
|
this.nMec = nMec;
|
||||||
}
|
}
|
||||||
|
@ -29,6 +30,7 @@ public class Student extends Person {
|
||||||
public DateYMD getRegistrationDate() {
|
public DateYMD getRegistrationDate() {
|
||||||
return this.registrationDate;
|
return this.registrationDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRegistrationDate(DateYMD registrationDate) {
|
public void setRegistrationDate(DateYMD registrationDate) {
|
||||||
LocalDate now = LocalDate.now();
|
LocalDate now = LocalDate.now();
|
||||||
this.registrationDate = registrationDate == null ? new DateYMD(now.getDayOfMonth(), now.getMonthValue(), now.getYear()) : registrationDate;
|
this.registrationDate = registrationDate == null ? new DateYMD(now.getDayOfMonth(), now.getMonthValue(), now.getYear()) : registrationDate;
|
||||||
|
|
|
@ -3,13 +3,12 @@ package aula06.ex2;
|
||||||
import aula06.ex1.Person;
|
import aula06.ex1.Person;
|
||||||
|
|
||||||
public class Contact {
|
public class Contact {
|
||||||
|
private static int currentId = 1;
|
||||||
private final int id;
|
private final int id;
|
||||||
private Person person;
|
private Person person;
|
||||||
private String email;
|
private String email;
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
||||||
private static int currentId = 1;
|
|
||||||
|
|
||||||
public Contact(Person person, String email, String phone) {
|
public Contact(Person person, String email, String phone) {
|
||||||
if ((email == null || email.isEmpty()) && (phone == null || phone.isEmpty()))
|
if ((email == null || email.isEmpty()) && (phone == null || phone.isEmpty()))
|
||||||
throw new IllegalArgumentException("Either email or phone must be provided");
|
throw new IllegalArgumentException("Either email or phone must be provided");
|
||||||
|
@ -26,6 +25,7 @@ public class Contact {
|
||||||
public Person getPerson() {
|
public Person getPerson() {
|
||||||
return person;
|
return person;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPerson(Person person) {
|
public void setPerson(Person person) {
|
||||||
if (person == null)
|
if (person == null)
|
||||||
throw new IllegalArgumentException("Person must be provided");
|
throw new IllegalArgumentException("Person must be provided");
|
||||||
|
@ -35,6 +35,7 @@ public class Contact {
|
||||||
public String getEmail() {
|
public String getEmail() {
|
||||||
return email;
|
return email;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEmail(String email) {
|
public void setEmail(String email) {
|
||||||
if (!(email == null || email.isEmpty()) &&
|
if (!(email == null || email.isEmpty()) &&
|
||||||
!email.matches("^[a-zA-Z_0-9.]+@[a-zA-Z_0-9.]+\\.[a-zA-Z_0-9]+$"))
|
!email.matches("^[a-zA-Z_0-9.]+@[a-zA-Z_0-9.]+\\.[a-zA-Z_0-9]+$"))
|
||||||
|
@ -45,6 +46,7 @@ public class Contact {
|
||||||
public String getPhone() {
|
public String getPhone() {
|
||||||
return phone;
|
return phone;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPhone(String phone) {
|
public void setPhone(String phone) {
|
||||||
if (!(phone == null || phone.isEmpty()) &&
|
if (!(phone == null || phone.isEmpty()) &&
|
||||||
!phone.matches("^9[0-9]{8}$"))
|
!phone.matches("^9[0-9]{8}$"))
|
||||||
|
|
|
@ -40,6 +40,7 @@ public class ContactList {
|
||||||
System.out.print("> ");
|
System.out.print("> ");
|
||||||
return sin.nextLine();
|
return sin.nextLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addContact() {
|
private static void addContact() {
|
||||||
System.out.print("Insira o nome: ");
|
System.out.print("Insira o nome: ");
|
||||||
String name = sin.nextLine();
|
String name = sin.nextLine();
|
||||||
|
@ -69,6 +70,7 @@ public class ContactList {
|
||||||
contacts = newContacts;
|
contacts = newContacts;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void changeContact() {
|
private static void changeContact() {
|
||||||
System.out.print("Insira o nome, email ou telefone do contacto que pretende alterar: ");
|
System.out.print("Insira o nome, email ou telefone do contacto que pretende alterar: ");
|
||||||
String query = sin.nextLine();
|
String query = sin.nextLine();
|
||||||
|
|
|
@ -7,12 +7,15 @@ public class Vector {
|
||||||
public Vector() {
|
public Vector() {
|
||||||
this.vector = new int[0];
|
this.vector = new int[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector(int size) {
|
public Vector(int size) {
|
||||||
this.vector = new int[size];
|
this.vector = new int[size];
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector(int[] vector) {
|
public Vector(int[] vector) {
|
||||||
this.vector = vector;
|
this.vector = vector;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int[] getVector() {
|
public int[] getVector() {
|
||||||
return vector;
|
return vector;
|
||||||
}
|
}
|
||||||
|
@ -21,12 +24,14 @@ public class Vector {
|
||||||
public int size() {
|
public int size() {
|
||||||
return this.vector.length;
|
return this.vector.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean contains(int value) {
|
public boolean contains(int value) {
|
||||||
for (int n : this.vector)
|
for (int n : this.vector)
|
||||||
if (n == value)
|
if (n == value)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int count(int value) {
|
public int count(int value) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (int n : this.vector)
|
for (int n : this.vector)
|
||||||
|
@ -38,13 +43,14 @@ public class Vector {
|
||||||
// Method to change values
|
// Method to change values
|
||||||
public void insert(int value) {
|
public void insert(int value) {
|
||||||
if (this.contains(value)) return;
|
if (this.contains(value)) return;
|
||||||
int[] aux = new int[this.size()+1];
|
int[] aux = new int[this.size() + 1];
|
||||||
System.arraycopy(this.vector, 0, aux, 0, this.size());
|
System.arraycopy(this.vector, 0, aux, 0, this.size());
|
||||||
aux[this.size()] = value;
|
aux[this.size()] = value;
|
||||||
this.vector = aux;
|
this.vector = aux;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void remove(int value) {
|
public void remove(int value) {
|
||||||
int[] aux = new int[this.size()-this.count(value)];
|
int[] aux = new int[this.size() - this.count(value)];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (int n : this.vector) {
|
for (int n : this.vector) {
|
||||||
if (n == value)
|
if (n == value)
|
||||||
|
@ -54,6 +60,7 @@ public class Vector {
|
||||||
}
|
}
|
||||||
this.vector = aux;
|
this.vector = aux;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void empty() {
|
public void empty() {
|
||||||
this.vector = new int[0];
|
this.vector = new int[0];
|
||||||
}
|
}
|
||||||
|
@ -69,6 +76,7 @@ public class Vector {
|
||||||
result.insert(n);
|
result.insert(n);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector subtract(Vector secondVector) {
|
public Vector subtract(Vector secondVector) {
|
||||||
Vector result = new Vector();
|
Vector result = new Vector();
|
||||||
for (int n : this.vector)
|
for (int n : this.vector)
|
||||||
|
@ -76,6 +84,7 @@ public class Vector {
|
||||||
result.insert(n);
|
result.insert(n);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector intersect(Vector secondVector) {
|
public Vector intersect(Vector secondVector) {
|
||||||
Vector result = new Vector();
|
Vector result = new Vector();
|
||||||
for (int n : this.vector)
|
for (int n : this.vector)
|
||||||
|
@ -90,6 +99,6 @@ public class Vector {
|
||||||
StringBuilder result = new StringBuilder();
|
StringBuilder result = new StringBuilder();
|
||||||
for (int n : this.vector)
|
for (int n : this.vector)
|
||||||
result.append(String.format("%d ", n));
|
result.append(String.format("%d ", n));
|
||||||
return this.size() > 0 ? result.substring(0, result.length()-1) : result.toString();
|
return this.size() > 0 ? result.substring(0, result.length() - 1) : result.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,17 @@ package aula06.ex3;
|
||||||
public class VectorTest {
|
public class VectorTest {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Vector c1 = new Vector();
|
Vector c1 = new Vector();
|
||||||
c1.insert(4); c1.insert(7); c1.insert(6); c1.insert(5);
|
c1.insert(4);
|
||||||
|
c1.insert(7);
|
||||||
|
c1.insert(6);
|
||||||
|
c1.insert(5);
|
||||||
|
|
||||||
Vector c2 = new Vector();
|
Vector c2 = new Vector();
|
||||||
int[] test = { 7, 3, 2, 5, 4, 6, 7};
|
int[] test = {7, 3, 2, 5, 4, 6, 7};
|
||||||
for (int el : test) c2.insert(el);
|
for (int el : test) c2.insert(el);
|
||||||
c2.remove(3); c2.remove(5); c2.remove(6);
|
c2.remove(3);
|
||||||
|
c2.remove(5);
|
||||||
|
c2.remove(6);
|
||||||
|
|
||||||
System.out.println(c1);
|
System.out.println(c1);
|
||||||
System.out.println(c2);
|
System.out.println(c2);
|
||||||
|
|
|
@ -12,7 +12,7 @@ public class Rectangle extends Shape {
|
||||||
}
|
}
|
||||||
|
|
||||||
public double[] getSides() {
|
public double[] getSides() {
|
||||||
return new double[] {this.side1, this.side2};
|
return new double[]{this.side1, this.side2};
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSides(double side1, double side2) {
|
public void setSides(double side1, double side2) {
|
||||||
|
|
|
@ -2,8 +2,12 @@ package aula07.ex1;
|
||||||
|
|
||||||
public abstract class Shape {
|
public abstract class Shape {
|
||||||
protected String color;
|
protected String color;
|
||||||
|
|
||||||
public abstract boolean equals(Shape c2);
|
public abstract boolean equals(Shape c2);
|
||||||
|
|
||||||
public abstract String toString();
|
public abstract String toString();
|
||||||
|
|
||||||
public abstract double getArea();
|
public abstract double getArea();
|
||||||
|
|
||||||
public abstract double getPerimeter();
|
public abstract double getPerimeter();
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ public class Triangle extends Shape {
|
||||||
}
|
}
|
||||||
|
|
||||||
public double[] getSides() {
|
public double[] getSides() {
|
||||||
return new double[] {this.side1, this.side2, this.side3};
|
return new double[]{this.side1, this.side2, this.side3};
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSides(double side1, double side2, double side3) {
|
public void setSides(double side1, double side2, double side3) {
|
||||||
|
|
|
@ -1,16 +1,6 @@
|
||||||
package aula07.ex2;
|
package aula07.ex2;
|
||||||
|
|
||||||
public abstract class Date {
|
public abstract class Date {
|
||||||
public abstract int getAbsDay();
|
|
||||||
public abstract int getDay();
|
|
||||||
public abstract int getMonth();
|
|
||||||
public abstract int getYear();
|
|
||||||
public abstract void increment();
|
|
||||||
public abstract void decrement();
|
|
||||||
public abstract void addDays(int days);
|
|
||||||
public abstract void removeDays(int days);
|
|
||||||
|
|
||||||
|
|
||||||
public static int monthDays(int month, int year) {
|
public static int monthDays(int month, int year) {
|
||||||
if (!validMonth(month))
|
if (!validMonth(month))
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -31,4 +21,20 @@ public abstract class Date {
|
||||||
public static boolean isLeapYear(int year) {
|
public static boolean isLeapYear(int year) {
|
||||||
return year % 100 == 0 ? year % 400 == 0 : year % 4 == 0;
|
return year % 100 == 0 ? year % 400 == 0 : year % 4 == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract int getAbsDay();
|
||||||
|
|
||||||
|
public abstract int getDay();
|
||||||
|
|
||||||
|
public abstract int getMonth();
|
||||||
|
|
||||||
|
public abstract int getYear();
|
||||||
|
|
||||||
|
public abstract void increment();
|
||||||
|
|
||||||
|
public abstract void decrement();
|
||||||
|
|
||||||
|
public abstract void addDays(int days);
|
||||||
|
|
||||||
|
public abstract void removeDays(int days);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,8 @@ public class DateTest {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Scanner sin = new Scanner(System.in);
|
Scanner sin = new Scanner(System.in);
|
||||||
|
|
||||||
mainLoop: while (true) {
|
mainLoop:
|
||||||
|
while (true) {
|
||||||
System.out.print("Class to test (0-Quit;1-DateYMD;2-DateND): ");
|
System.out.print("Class to test (0-Quit;1-DateYMD;2-DateND): ");
|
||||||
int classoption = sin.nextInt();
|
int classoption = sin.nextInt();
|
||||||
|
|
||||||
|
@ -17,7 +18,8 @@ public class DateTest {
|
||||||
}
|
}
|
||||||
case 1 -> {
|
case 1 -> {
|
||||||
DateYMD date = null;
|
DateYMD date = null;
|
||||||
class1Loop: while (true) {
|
class1Loop:
|
||||||
|
while (true) {
|
||||||
System.out.println("Date operations:");
|
System.out.println("Date operations:");
|
||||||
System.out.println("1 - Create date");
|
System.out.println("1 - Create date");
|
||||||
System.out.println("2 - Show current date");
|
System.out.println("2 - Show current date");
|
||||||
|
@ -28,8 +30,9 @@ public class DateTest {
|
||||||
System.out.print("Option: ");
|
System.out.print("Option: ");
|
||||||
int option = sin.nextInt();
|
int option = sin.nextInt();
|
||||||
if (option == 0)
|
if (option == 0)
|
||||||
break class1Loop;
|
break;
|
||||||
class1Switch: switch (option) {
|
class1Switch:
|
||||||
|
switch (option) {
|
||||||
case 1 -> {
|
case 1 -> {
|
||||||
System.out.print("Day: ");
|
System.out.print("Day: ");
|
||||||
int day = sin.nextInt();
|
int day = sin.nextInt();
|
||||||
|
@ -43,21 +46,21 @@ public class DateTest {
|
||||||
case 2 -> {
|
case 2 -> {
|
||||||
if (date == null) {
|
if (date == null) {
|
||||||
System.out.println("Date not created");
|
System.out.println("Date not created");
|
||||||
break class1Switch;
|
break;
|
||||||
}
|
}
|
||||||
System.out.println("Current date: " + date);
|
System.out.println("Current date: " + date);
|
||||||
}
|
}
|
||||||
case 3 -> {
|
case 3 -> {
|
||||||
if (date == null) {
|
if (date == null) {
|
||||||
System.out.println("Date not created");
|
System.out.println("Date not created");
|
||||||
break class1Switch;
|
break;
|
||||||
}
|
}
|
||||||
System.out.println("Current date: " + new DateND(date.getAbsDay()));
|
System.out.println("Current date: " + new DateND(date.getAbsDay()));
|
||||||
}
|
}
|
||||||
case 4 -> {
|
case 4 -> {
|
||||||
if (date == null) {
|
if (date == null) {
|
||||||
System.out.println("Date not created");
|
System.out.println("Date not created");
|
||||||
break class1Switch;
|
break;
|
||||||
}
|
}
|
||||||
System.out.print("Number of days to increment date by: ");
|
System.out.print("Number of days to increment date by: ");
|
||||||
int daysToIncrement = sin.nextInt();
|
int daysToIncrement = sin.nextInt();
|
||||||
|
@ -67,7 +70,7 @@ public class DateTest {
|
||||||
case 5 -> {
|
case 5 -> {
|
||||||
if (date == null) {
|
if (date == null) {
|
||||||
System.out.println("Date not created");
|
System.out.println("Date not created");
|
||||||
break class1Switch;
|
break;
|
||||||
}
|
}
|
||||||
System.out.print("Number of days to decremente date by: ");
|
System.out.print("Number of days to decremente date by: ");
|
||||||
int daysToDecrement = sin.nextInt();
|
int daysToDecrement = sin.nextInt();
|
||||||
|
@ -80,7 +83,8 @@ public class DateTest {
|
||||||
}
|
}
|
||||||
case 2 -> {
|
case 2 -> {
|
||||||
DateND date = null;
|
DateND date = null;
|
||||||
class2Loop: while (true) {
|
class2Loop:
|
||||||
|
while (true) {
|
||||||
System.out.println("Date operations:");
|
System.out.println("Date operations:");
|
||||||
System.out.println("1 - Create date");
|
System.out.println("1 - Create date");
|
||||||
System.out.println("2 - Show current date");
|
System.out.println("2 - Show current date");
|
||||||
|
@ -91,8 +95,9 @@ public class DateTest {
|
||||||
System.out.print("Option: ");
|
System.out.print("Option: ");
|
||||||
int option = sin.nextInt();
|
int option = sin.nextInt();
|
||||||
if (option == 0)
|
if (option == 0)
|
||||||
break class2Loop;
|
break;
|
||||||
class2Switch: switch (option) {
|
class2Switch:
|
||||||
|
switch (option) {
|
||||||
case 1 -> {
|
case 1 -> {
|
||||||
System.out.print("Day: ");
|
System.out.print("Day: ");
|
||||||
int day = sin.nextInt();
|
int day = sin.nextInt();
|
||||||
|
@ -102,21 +107,21 @@ public class DateTest {
|
||||||
case 2 -> {
|
case 2 -> {
|
||||||
if (date == null) {
|
if (date == null) {
|
||||||
System.out.println("Date not created");
|
System.out.println("Date not created");
|
||||||
break class2Switch;
|
break;
|
||||||
}
|
}
|
||||||
System.out.println("Current date: " + date);
|
System.out.println("Current date: " + date);
|
||||||
}
|
}
|
||||||
case 3 -> {
|
case 3 -> {
|
||||||
if (date == null) {
|
if (date == null) {
|
||||||
System.out.println("Date not created");
|
System.out.println("Date not created");
|
||||||
break class2Switch;
|
break;
|
||||||
}
|
}
|
||||||
System.out.println("Current date: " + new DateYMD(date.getDay(), date.getMonth(), date.getYear()));
|
System.out.println("Current date: " + new DateYMD(date.getDay(), date.getMonth(), date.getYear()));
|
||||||
}
|
}
|
||||||
case 4 -> {
|
case 4 -> {
|
||||||
if (date == null) {
|
if (date == null) {
|
||||||
System.out.println("Date not created");
|
System.out.println("Date not created");
|
||||||
break class2Switch;
|
break;
|
||||||
}
|
}
|
||||||
System.out.print("Number of days to increment date by: ");
|
System.out.print("Number of days to increment date by: ");
|
||||||
int daysToIncrement = sin.nextInt();
|
int daysToIncrement = sin.nextInt();
|
||||||
|
@ -126,7 +131,7 @@ public class DateTest {
|
||||||
case 5 -> {
|
case 5 -> {
|
||||||
if (date == null) {
|
if (date == null) {
|
||||||
System.out.println("Date not created");
|
System.out.println("Date not created");
|
||||||
break class2Switch;
|
break;
|
||||||
}
|
}
|
||||||
System.out.print("Number of days to decremente date by: ");
|
System.out.print("Number of days to decremente date by: ");
|
||||||
int daysToDecrement = sin.nextInt();
|
int daysToDecrement = sin.nextInt();
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class DateYMD extends Date {
|
||||||
if (this.day > 1)
|
if (this.day > 1)
|
||||||
this.day--;
|
this.day--;
|
||||||
else {
|
else {
|
||||||
this.day = monthDays(this.month == 1 ? 12 : this.month-1, this.year);
|
this.day = monthDays(this.month == 1 ? 12 : this.month - 1, this.year);
|
||||||
if (this.month > 1)
|
if (this.month > 1)
|
||||||
this.month--;
|
this.month--;
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -3,10 +3,10 @@ package aula07.ex3;
|
||||||
public class Game {
|
public class Game {
|
||||||
private final Team team1;
|
private final Team team1;
|
||||||
private final Team team2;
|
private final Team team2;
|
||||||
private int team1Goals;
|
|
||||||
private int team2Goals;
|
|
||||||
private final Ball ball;
|
private final Ball ball;
|
||||||
private final double gameDuration;
|
private final double gameDuration;
|
||||||
|
private int team1Goals;
|
||||||
|
private int team2Goals;
|
||||||
private double timeElapsed;
|
private double timeElapsed;
|
||||||
|
|
||||||
public Game(Team team1, Team team2, Ball ball, double gameDuration) {
|
public Game(Team team1, Team team2, Ball ball, double gameDuration) {
|
||||||
|
|
|
@ -38,13 +38,13 @@ public class Main {
|
||||||
}
|
}
|
||||||
System.out.println("Equipas:");
|
System.out.println("Equipas:");
|
||||||
for (int i = 0; i < teams.length; i++)
|
for (int i = 0; i < teams.length; i++)
|
||||||
System.out.println((i+1) + " - " + teams[i].getName());
|
System.out.println((i + 1) + " - " + teams[i].getName());
|
||||||
System.out.print("Escolha a equipa 1: ");
|
System.out.print("Escolha a equipa 1: ");
|
||||||
int team1Id = Integer.parseInt(sin.nextLine());
|
int team1Id = Integer.parseInt(sin.nextLine());
|
||||||
System.out.print("Escolha a equipa 2: ");
|
System.out.print("Escolha a equipa 2: ");
|
||||||
int team2Id = Integer.parseInt(sin.nextLine());
|
int team2Id = Integer.parseInt(sin.nextLine());
|
||||||
Team team1 = teams[team1Id-1];
|
Team team1 = teams[team1Id - 1];
|
||||||
Team team2 = teams[team2Id-1];
|
Team team2 = teams[team2Id - 1];
|
||||||
System.out.println("Bola para o jogo:");
|
System.out.println("Bola para o jogo:");
|
||||||
System.out.print("Cor da bola: ");
|
System.out.print("Cor da bola: ");
|
||||||
String color = sin.nextLine();
|
String color = sin.nextLine();
|
||||||
|
@ -60,9 +60,9 @@ public class Main {
|
||||||
double duration = Double.parseDouble(durationString.equals("") ? "90" : durationString);
|
double duration = Double.parseDouble(durationString.equals("") ? "90" : durationString);
|
||||||
Game game = new Game(team1, team2, ball, duration);
|
Game game = new Game(team1, team2, ball, duration);
|
||||||
if (games == null)
|
if (games == null)
|
||||||
games = new Game[] { game };
|
games = new Game[]{game};
|
||||||
else {
|
else {
|
||||||
Game[] newGames = new Game[games.length+1];
|
Game[] newGames = new Game[games.length + 1];
|
||||||
System.arraycopy(games, 0, newGames, 0, games.length);
|
System.arraycopy(games, 0, newGames, 0, games.length);
|
||||||
newGames[games.length] = game;
|
newGames[games.length] = game;
|
||||||
games = newGames;
|
games = newGames;
|
||||||
|
@ -75,7 +75,8 @@ public class Main {
|
||||||
System.out.println("3 - Adicionar golo");
|
System.out.println("3 - Adicionar golo");
|
||||||
System.out.print("Opção: ");
|
System.out.print("Opção: ");
|
||||||
int option = Integer.parseInt(sin.nextLine());
|
int option = Integer.parseInt(sin.nextLine());
|
||||||
swit : switch (option) {
|
swit:
|
||||||
|
switch (option) {
|
||||||
case 1 -> {
|
case 1 -> {
|
||||||
System.out.print("Novo X: ");
|
System.out.print("Novo X: ");
|
||||||
double x = Double.parseDouble(sin.nextLine());
|
double x = Double.parseDouble(sin.nextLine());
|
||||||
|
@ -151,7 +152,7 @@ public class Main {
|
||||||
int nRobots = Integer.parseInt(sin.nextLine());
|
int nRobots = Integer.parseInt(sin.nextLine());
|
||||||
Robot[] robots = new Robot[nRobots];
|
Robot[] robots = new Robot[nRobots];
|
||||||
for (int i = 0; i < nRobots; i++) {
|
for (int i = 0; i < nRobots; i++) {
|
||||||
System.out.println("Robot " + (i+1));
|
System.out.println("Robot " + (i + 1));
|
||||||
System.out.print("\n1 - GoalKeeper\n2 - Defender\n3 - Midfielder\n4 - Striker\nPosição: ");
|
System.out.print("\n1 - GoalKeeper\n2 - Defender\n3 - Midfielder\n4 - Striker\nPosição: ");
|
||||||
PlayerPosition position = PlayerPosition.getPositionById(Integer.parseInt(sin.nextLine()));
|
PlayerPosition position = PlayerPosition.getPositionById(Integer.parseInt(sin.nextLine()));
|
||||||
System.out.print("X inicial: ");
|
System.out.print("X inicial: ");
|
||||||
|
@ -164,9 +165,9 @@ public class Main {
|
||||||
}
|
}
|
||||||
Team team = new Team(name, coach, robots);
|
Team team = new Team(name, coach, robots);
|
||||||
if (teams == null)
|
if (teams == null)
|
||||||
teams = new Team[] {team};
|
teams = new Team[]{team};
|
||||||
else {
|
else {
|
||||||
Team[] newTeams = new Team[teams.length+1];
|
Team[] newTeams = new Team[teams.length + 1];
|
||||||
System.arraycopy(teams, 0, newTeams, 0, teams.length);
|
System.arraycopy(teams, 0, newTeams, 0, teams.length);
|
||||||
newTeams[teams.length] = team;
|
newTeams[teams.length] = team;
|
||||||
teams = newTeams;
|
teams = newTeams;
|
||||||
|
|
|
@ -23,6 +23,7 @@ public class Robot extends MovableObject {
|
||||||
public PlayerPosition getPlayerPosition() {
|
public PlayerPosition getPlayerPosition() {
|
||||||
return this.playerPosition;
|
return this.playerPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPlayerPosition(PlayerPosition playerPosition) {
|
public void setPlayerPosition(PlayerPosition playerPosition) {
|
||||||
this.playerPosition = playerPosition;
|
this.playerPosition = playerPosition;
|
||||||
}
|
}
|
||||||
|
@ -30,6 +31,7 @@ public class Robot extends MovableObject {
|
||||||
public int getGoalsScored() {
|
public int getGoalsScored() {
|
||||||
return this.goalsScored;
|
return this.goalsScored;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void increaseGoalsScored() {
|
public void increaseGoalsScored() {
|
||||||
this.goalsScored++;
|
this.goalsScored++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,17 +54,17 @@ public class Team {
|
||||||
|
|
||||||
public void addRobot(Robot robot) {
|
public void addRobot(Robot robot) {
|
||||||
if (this.robots == null)
|
if (this.robots == null)
|
||||||
this.setRobots(new Robot[] {robot});
|
this.setRobots(new Robot[]{robot});
|
||||||
else {
|
else {
|
||||||
Robot[] newRobots = new Robot[this.robots.length+1];
|
Robot[] newRobots = new Robot[this.robots.length + 1];
|
||||||
System.arraycopy(this.robots, 0, newRobots, 0, this.robots.length);
|
System.arraycopy(this.robots, 0, newRobots, 0, this.robots.length);
|
||||||
newRobots[newRobots.length-1] = robot;
|
newRobots[newRobots.length - 1] = robot;
|
||||||
this.setRobots(newRobots);
|
this.setRobots(newRobots);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeRobot(Robot robot) {
|
public void removeRobot(Robot robot) {
|
||||||
Robot[] newRobots = new Robot[this.robots.length-1];
|
Robot[] newRobots = new Robot[this.robots.length - 1];
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (Robot r : this.robots)
|
for (Robot r : this.robots)
|
||||||
if (r.getId() != robot.getId()) {
|
if (r.getId() != robot.getId()) {
|
||||||
|
|
|
@ -2,5 +2,6 @@ package aula08.ex1.Interfaces;
|
||||||
|
|
||||||
public interface IElectricVehicle {
|
public interface IElectricVehicle {
|
||||||
int currentBatteryLvl();
|
int currentBatteryLvl();
|
||||||
|
|
||||||
void charge(int percentage);
|
void charge(int percentage);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,5 +2,6 @@ package aula08.ex1.Interfaces;
|
||||||
|
|
||||||
public interface IFuelVehicle {
|
public interface IFuelVehicle {
|
||||||
int fuelLevel();
|
int fuelLevel();
|
||||||
|
|
||||||
void fillTank(int level);
|
void fillTank(int level);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ package aula08.ex1.Interfaces;
|
||||||
|
|
||||||
public interface IKmTravelled {
|
public interface IKmTravelled {
|
||||||
void trip(int km);
|
void trip(int km);
|
||||||
|
|
||||||
int lastTrip();
|
int lastTrip();
|
||||||
|
|
||||||
int totalDistance();
|
int totalDistance();
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,13 +64,6 @@ public class Motorcycle extends Vehicle implements IFuelVehicle {
|
||||||
public enum MotorcycleType {
|
public enum MotorcycleType {
|
||||||
SPORT, TOURING;
|
SPORT, TOURING;
|
||||||
|
|
||||||
public String toString() {
|
|
||||||
return switch (this) {
|
|
||||||
case SPORT -> "Sport";
|
|
||||||
case TOURING -> "Touring";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MotorcycleType fromString(String s) {
|
public static MotorcycleType fromString(String s) {
|
||||||
return switch (s) {
|
return switch (s) {
|
||||||
case "SPORT", "Sport", "sport" -> SPORT;
|
case "SPORT", "Sport", "sport" -> SPORT;
|
||||||
|
@ -78,5 +71,12 @@ public class Motorcycle extends Vehicle implements IFuelVehicle {
|
||||||
default -> throw new IllegalArgumentException("Invalid MotorcycleType: " + s);
|
default -> throw new IllegalArgumentException("Invalid MotorcycleType: " + s);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
return switch (this) {
|
||||||
|
case SPORT -> "Sport";
|
||||||
|
case TOURING -> "Touring";
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -5,10 +5,10 @@ import aula08.ex2.Enums.AlimentOrigin;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public abstract class Aliment {
|
public abstract class Aliment {
|
||||||
|
final AlimentOrigin alimentOrigin;
|
||||||
double proteins;
|
double proteins;
|
||||||
double calories;
|
double calories;
|
||||||
double weight;
|
double weight;
|
||||||
final AlimentOrigin alimentOrigin;
|
|
||||||
|
|
||||||
public Aliment(double proteins, double calories, double weight, AlimentOrigin alimentOrigin) {
|
public Aliment(double proteins, double calories, double weight, AlimentOrigin alimentOrigin) {
|
||||||
setProteins(proteins);
|
setProteins(proteins);
|
||||||
|
@ -19,7 +19,7 @@ public abstract class Aliment {
|
||||||
|
|
||||||
public double getProteins() {
|
public double getProteins() {
|
||||||
return this.proteins;
|
return this.proteins;
|
||||||
};
|
}
|
||||||
|
|
||||||
public void setProteins(double proteins) {
|
public void setProteins(double proteins) {
|
||||||
if (proteins <= 0)
|
if (proteins <= 0)
|
||||||
|
|
|
@ -5,7 +5,7 @@ public enum AlimentType {
|
||||||
|
|
||||||
public static AlimentType fromString(String string) {
|
public static AlimentType fromString(String string) {
|
||||||
return switch (string.toUpperCase()) {
|
return switch (string.toUpperCase()) {
|
||||||
case "MEAT"-> MEAT;
|
case "MEAT" -> MEAT;
|
||||||
case "FISH" -> FISH;
|
case "FISH" -> FISH;
|
||||||
case "CEREAL" -> CEREAL;
|
case "CEREAL" -> CEREAL;
|
||||||
case "VEGETABLE" -> VEGETABLE;
|
case "VEGETABLE" -> VEGETABLE;
|
||||||
|
|
|
@ -5,7 +5,7 @@ public enum FishState {
|
||||||
|
|
||||||
public static FishState fromString(String string) {
|
public static FishState fromString(String string) {
|
||||||
return switch (string.toUpperCase()) {
|
return switch (string.toUpperCase()) {
|
||||||
case "FRESH"-> FRESH;
|
case "FRESH" -> FRESH;
|
||||||
case "FROZEN" -> FROZEN;
|
case "FROZEN" -> FROZEN;
|
||||||
default -> null;
|
default -> null;
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,9 +2,14 @@ package aula08.ex3.Interfaces;
|
||||||
|
|
||||||
public interface IProduct {
|
public interface IProduct {
|
||||||
String getName();
|
String getName();
|
||||||
void setPrice(double price);
|
|
||||||
double getPrice();
|
double getPrice();
|
||||||
|
|
||||||
|
void setPrice(double price);
|
||||||
|
|
||||||
int stock();
|
int stock();
|
||||||
|
|
||||||
void addStock(int amount);
|
void addStock(int amount);
|
||||||
|
|
||||||
void removeStock(int amount);
|
void removeStock(int amount);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,8 @@ import aula08.ex3.Product;
|
||||||
|
|
||||||
public interface IPurchase {
|
public interface IPurchase {
|
||||||
void addProduct(Product product, int amount);
|
void addProduct(Product product, int amount);
|
||||||
|
|
||||||
void listProducts();
|
void listProducts();
|
||||||
|
|
||||||
double getTotal();
|
double getTotal();
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ public class Purchase implements IPurchase {
|
||||||
product.removeStock(amount);
|
product.removeStock(amount);
|
||||||
if (products.containsKey(product)) {
|
if (products.containsKey(product)) {
|
||||||
int currentAmount = products.get(product);
|
int currentAmount = products.get(product);
|
||||||
products.replace(product, currentAmount+amount);
|
products.replace(product, currentAmount + amount);
|
||||||
} else
|
} else
|
||||||
products.put(product, amount);
|
products.put(product, amount);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,13 +10,14 @@ import java.util.Set;
|
||||||
|
|
||||||
public class ALDemo {
|
public class ALDemo {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
ArrayList<Integer> c1= new ArrayList<>();
|
ArrayList<Integer> c1 = new ArrayList<>();
|
||||||
for(int i= 10; i<= 100; i+=10) c1.add(i);System.out.println("Size: "+ c1.size());
|
for (int i = 10; i <= 100; i += 10) c1.add(i);
|
||||||
|
System.out.println("Size: " + c1.size());
|
||||||
|
|
||||||
for(int i= 0; i< c1.size(); i++)
|
for (int i = 0; i < c1.size(); i++)
|
||||||
System.out.println("Elemento: "+ c1.get(i));
|
System.out.println("Elemento: " + c1.get(i));
|
||||||
|
|
||||||
ArrayList<String> c2= new ArrayList<>();
|
ArrayList<String> c2 = new ArrayList<>();
|
||||||
c2.add("Vento");
|
c2.add("Vento");
|
||||||
c2.add("Calor");
|
c2.add("Calor");
|
||||||
c2.add("Frio");
|
c2.add("Frio");
|
||||||
|
|
|
@ -6,8 +6,8 @@ import java.util.Iterator;
|
||||||
|
|
||||||
public class CollectionTester {
|
public class CollectionTester {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
int DIM= 5000;
|
int DIM = 5000;
|
||||||
Collection<Integer> col= new ArrayList<>();
|
Collection<Integer> col = new ArrayList<>();
|
||||||
checkPerformance(col, DIM);
|
checkPerformance(col, DIM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,32 +15,32 @@ public class CollectionTester {
|
||||||
double start, stop, delta;
|
double start, stop, delta;
|
||||||
// Add
|
// Add
|
||||||
start = System.nanoTime(); // clock snapshot before
|
start = System.nanoTime(); // clock snapshot before
|
||||||
for(int i=0; i<DIM; i++)
|
for (int i = 0; i < DIM; i++)
|
||||||
col.add(i);
|
col.add(i);
|
||||||
stop = System.nanoTime(); // clock snapshot after
|
stop = System.nanoTime(); // clock snapshot after
|
||||||
delta = (stop-start)/1e6; // convert to milliseconds
|
delta = (stop - start) / 1e6; // convert to milliseconds
|
||||||
System.out.println(col.size()+ ": Add to "+col.getClass().getSimpleName() +" took "+ delta+ "ms");
|
System.out.println(col.size() + ": Add to " + col.getClass().getSimpleName() + " took " + delta + "ms");
|
||||||
|
|
||||||
// Search
|
// Search
|
||||||
start = System.nanoTime(); // clock snapshot before
|
start = System.nanoTime(); // clock snapshot before
|
||||||
for(int i=0; i<DIM; i++) {
|
for (int i = 0; i < DIM; i++) {
|
||||||
int n = (int) (Math.random()*DIM);
|
int n = (int) (Math.random() * DIM);
|
||||||
if(!col.contains(n))
|
if (!col.contains(n))
|
||||||
System.out.println("Not found???"+n);
|
System.out.println("Not found???" + n);
|
||||||
}
|
}
|
||||||
stop = System.nanoTime(); // clock snapshot after
|
stop = System.nanoTime(); // clock snapshot after
|
||||||
delta = (stop-start)/1e6; // convert nanoseconds to milliseconds
|
delta = (stop - start) / 1e6; // convert nanoseconds to milliseconds
|
||||||
System.out.println(col.size()+ ": Search to "+ col.getClass().getSimpleName() +" took "+ delta+ "ms");
|
System.out.println(col.size() + ": Search to " + col.getClass().getSimpleName() + " took " + delta + "ms");
|
||||||
|
|
||||||
// Remove
|
// Remove
|
||||||
start = System.nanoTime(); // clock snapshot before
|
start = System.nanoTime(); // clock snapshot before
|
||||||
Iterator<Integer> iterator = col.iterator();
|
Iterator<Integer> iterator = col.iterator();
|
||||||
while(iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
iterator.next();
|
iterator.next();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
}
|
}
|
||||||
stop = System.nanoTime(); // clock snapshot after
|
stop = System.nanoTime(); // clock snapshot after
|
||||||
delta = (stop-start)/1e6; // convert nanoseconds to milliseconds
|
delta = (stop - start) / 1e6; // convert nanoseconds to milliseconds
|
||||||
System.out.println(col.size() + ": Remove from "+ col.getClass().getSimpleName() +" took "+ delta+ "ms");
|
System.out.println(col.size() + ": Remove from " + col.getClass().getSimpleName() + " took " + delta + "ms");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,8 +67,7 @@ public class PlaneManager {
|
||||||
for (Plane plane : planes) {
|
for (Plane plane : planes) {
|
||||||
if (plane instanceof CommercialPlane && type.equals("commercial")) {
|
if (plane instanceof CommercialPlane && type.equals("commercial")) {
|
||||||
System.out.println(plane);
|
System.out.println(plane);
|
||||||
}
|
} else if (plane instanceof MilitaryPlane && type.equals("military")) {
|
||||||
else if (plane instanceof MilitaryPlane && type.equals("military")) {
|
|
||||||
System.out.println(plane);
|
System.out.println(plane);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,8 +57,7 @@ public class PlaneTester {
|
||||||
System.out.print("Enter the plane's crew members count: ");
|
System.out.print("Enter the plane's crew members count: ");
|
||||||
int crewMembersCount = Integer.parseInt(scanner.nextLine());
|
int crewMembersCount = Integer.parseInt(scanner.nextLine());
|
||||||
planeManager.addPlane(new CommercialPlane(id, manufacturer, model, year, passengerCount, maxSpeed, crewMembersCount));
|
planeManager.addPlane(new CommercialPlane(id, manufacturer, model, year, passengerCount, maxSpeed, crewMembersCount));
|
||||||
}
|
} else if (type.equals("military")) {
|
||||||
else if (type.equals("military")) {
|
|
||||||
System.out.print("Enter the plane's missile count: ");
|
System.out.print("Enter the plane's missile count: ");
|
||||||
int missileCount = Integer.parseInt(scanner.nextLine());
|
int missileCount = Integer.parseInt(scanner.nextLine());
|
||||||
planeManager.addPlane(new MilitaryPlane(id, manufacturer, model, year, passengerCount, maxSpeed, missileCount));
|
planeManager.addPlane(new MilitaryPlane(id, manufacturer, model, year, passengerCount, maxSpeed, missileCount));
|
||||||
|
|
|
@ -13,12 +13,29 @@ public class Book {
|
||||||
this.setYear(year);
|
this.setYear(year);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTitle() { return this.title; }
|
public String getTitle() {
|
||||||
public void setTitle(String title) { this.title = title; }
|
return this.title;
|
||||||
public String getAuthor() { return this.author; }
|
}
|
||||||
public void setAuthor(String author) { this.author = author; }
|
|
||||||
public int getYear() { return this.year; }
|
public void setTitle(String title) {
|
||||||
public void setYear(int year) { this.year = year; }
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAuthor() {
|
||||||
|
return this.author;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAuthor(String author) {
|
||||||
|
this.author = author;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getYear() {
|
||||||
|
return this.year;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setYear(int year) {
|
||||||
|
this.year = year;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
|
|
@ -14,7 +14,7 @@ public class FileReaderTest {
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
while(input.hasNext()){
|
while (input.hasNext()) {
|
||||||
String word = input.next();
|
String word = input.next();
|
||||||
if (word.length() > 2) {
|
if (word.length() > 2) {
|
||||||
words.add(word);
|
words.add(word);
|
||||||
|
|
|
@ -23,8 +23,8 @@ public class WordPairCounter {
|
||||||
}
|
}
|
||||||
Object[] words = Arrays.stream(text.split("[\\s.,:'‘’;?!\\-*{}=+&/()\\[\\]”“\"]+")).filter(word -> word.length() > 2).map(String::toLowerCase).toArray();
|
Object[] words = Arrays.stream(text.split("[\\s.,:'‘’;?!\\-*{}=+&/()\\[\\]”“\"]+")).filter(word -> word.length() > 2).map(String::toLowerCase).toArray();
|
||||||
|
|
||||||
for (int i = 1; i < words.length-1; i++) {
|
for (int i = 1; i < words.length - 1; i++) {
|
||||||
String word1 = (String) words[i-1];
|
String word1 = (String) words[i - 1];
|
||||||
String word2 = (String) words[i];
|
String word2 = (String) words[i];
|
||||||
|
|
||||||
HashMap<String, Integer> word1Pair = wordPairs.getOrDefault(word1, new HashMap<>());
|
HashMap<String, Integer> word1Pair = wordPairs.getOrDefault(word1, new HashMap<>());
|
||||||
|
|
|
@ -15,6 +15,16 @@ public class FlightManager {
|
||||||
private String delaysTable;
|
private String delaysTable;
|
||||||
private String flightsNTable;
|
private String flightsNTable;
|
||||||
|
|
||||||
|
private static Map<String, Integer> sortByValue(Map<String, Integer> unsortMap) {
|
||||||
|
List<Map.Entry<String, Integer>> list = new LinkedList<>(unsortMap.entrySet());
|
||||||
|
|
||||||
|
// Sorting the list based on values
|
||||||
|
list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()) == 0
|
||||||
|
? o2.getKey().compareTo(o1.getKey())
|
||||||
|
: o2.getValue().compareTo(o1.getValue()));
|
||||||
|
return list.stream().collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b, LinkedHashMap::new));
|
||||||
|
}
|
||||||
|
|
||||||
public void loadCompanies(String filename) {
|
public void loadCompanies(String filename) {
|
||||||
Scanner input;
|
Scanner input;
|
||||||
try {
|
try {
|
||||||
|
@ -23,10 +33,10 @@ public class FlightManager {
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
while(input.hasNext()){
|
while (input.hasNext()) {
|
||||||
String line = input.nextLine();
|
String line = input.nextLine();
|
||||||
String[] fields = line.split("\t");
|
String[] fields = line.split("\t");
|
||||||
if(fields.length != 2)
|
if (fields.length != 2)
|
||||||
throw new RuntimeException("Invalid file format");
|
throw new RuntimeException("Invalid file format");
|
||||||
this.companies.add(new Company(fields[0], fields[1], new LinkedList<>()));
|
this.companies.add(new Company(fields[0], fields[1], new LinkedList<>()));
|
||||||
}
|
}
|
||||||
|
@ -127,14 +137,4 @@ public class FlightManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Map<String, Integer> sortByValue(Map<String, Integer> unsortMap) {
|
|
||||||
List<Map.Entry<String, Integer>> list = new LinkedList<>(unsortMap.entrySet());
|
|
||||||
|
|
||||||
// Sorting the list based on values
|
|
||||||
list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()) == 0
|
|
||||||
? o2.getKey().compareTo(o1.getKey())
|
|
||||||
: o2.getValue().compareTo(o1.getValue()));
|
|
||||||
return list.stream().collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b, LinkedHashMap::new));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,14 @@ public class Time {
|
||||||
this.minute = minute;
|
this.minute = minute;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int timeToMinsInt(Time time) {
|
||||||
|
return time.hour() * 60 + time.minute();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Time minsIntToTime(int mins) {
|
||||||
|
return new Time(mins / 60, mins % 60);
|
||||||
|
}
|
||||||
|
|
||||||
public Time addTime(Time time) {
|
public Time addTime(Time time) {
|
||||||
int newHour = hour + time.hour();
|
int newHour = hour + time.hour();
|
||||||
int newMinute = minute + time.minute();
|
int newMinute = minute + time.minute();
|
||||||
|
@ -34,14 +42,6 @@ public class Time {
|
||||||
return String.format("%02d:%02d", hour, minute);
|
return String.format("%02d:%02d", hour, minute);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int timeToMinsInt(Time time) {
|
|
||||||
return time.hour() * 60 + time.minute();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Time minsIntToTime(int mins) {
|
|
||||||
return new Time(mins/60, mins%60);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int hour() {
|
public int hour() {
|
||||||
return hour;
|
return hour;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,11 +26,16 @@ public class Animal {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
public void setName(String name) {
|
public void setName(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
public String getName() {
|
|
||||||
return name;
|
public int getWeight() {
|
||||||
|
return weight;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setWeight(int weight) {
|
public void setWeight(int weight) {
|
||||||
|
@ -38,8 +43,9 @@ public class Animal {
|
||||||
throw new IllegalArgumentException("Weight must be positive!");
|
throw new IllegalArgumentException("Weight must be positive!");
|
||||||
this.weight = weight;
|
this.weight = weight;
|
||||||
}
|
}
|
||||||
public int getWeight() {
|
|
||||||
return weight;
|
public int getAge() {
|
||||||
|
return age;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAge(int age) {
|
public void setAge(int age) {
|
||||||
|
@ -47,21 +53,20 @@ public class Animal {
|
||||||
throw new IllegalArgumentException("Age must be positive!");
|
throw new IllegalArgumentException("Age must be positive!");
|
||||||
this.age = age;
|
this.age = age;
|
||||||
}
|
}
|
||||||
public int getAge() {
|
|
||||||
return age;
|
public String getSponsor() {
|
||||||
|
return sponsor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSponsor(String sponsor) {
|
public void setSponsor(String sponsor) {
|
||||||
this.sponsor = sponsor;
|
this.sponsor = sponsor;
|
||||||
}
|
}
|
||||||
public String getSponsor() {
|
|
||||||
return sponsor;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("ID: %d\nName: %s\nAge: %d\nWeight: %d\nSponsor: %s", this.id, this.name, this.age, this.weight, this.sponsor == null ? "None" : sponsor);
|
return String.format("ID: %d\nName: %s\nAge: %d\nWeight: %d\nSponsor: %s", this.id, this.name, this.age, this.weight, this.sponsor == null ? "None" : sponsor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (this == o) return true;
|
if (this == o) return true;
|
||||||
|
@ -69,6 +74,7 @@ public class Animal {
|
||||||
Animal animal = (Animal) o;
|
Animal animal = (Animal) o;
|
||||||
return id == animal.id && weight == animal.weight && age == animal.age && Objects.equals(name, animal.name) && Objects.equals(sponsor, animal.sponsor);
|
return id == animal.id && weight == animal.weight && age == animal.age && Objects.equals(name, animal.name) && Objects.equals(sponsor, animal.sponsor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(id, name, weight, age, sponsor);
|
return Objects.hash(id, name, weight, age, sponsor);
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
package aval.aa1;
|
package aval.aa1;
|
||||||
|
|
||||||
public interface IPetShelter {
|
public interface IPetShelter {
|
||||||
public void addAnimal(Animal animal);
|
void addAnimal(Animal animal);
|
||||||
public void removeAnimal(Animal animal);
|
|
||||||
public Animal searchForAnimal(String name);
|
void removeAnimal(Animal animal);
|
||||||
public boolean sponsorAnimal(int animalId);
|
|
||||||
public void listAllAnimals();
|
Animal searchForAnimal(String name);
|
||||||
|
|
||||||
|
boolean sponsorAnimal(int animalId);
|
||||||
|
|
||||||
|
void listAllAnimals();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ package aval.aa1;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class PetShelter implements IPetShelter {
|
public class PetShelter implements IPetShelter {
|
||||||
private String shelterName;
|
private final String shelterName;
|
||||||
private Animal[] animals;
|
private Animal[] animals;
|
||||||
|
|
||||||
public PetShelter(String shelterName) {
|
public PetShelter(String shelterName) {
|
||||||
|
@ -17,9 +17,7 @@ public class PetShelter implements IPetShelter {
|
||||||
animals[0] = animal;
|
animals[0] = animal;
|
||||||
} else {
|
} else {
|
||||||
Animal[] newAnimals = new Animal[animals.length + 1];
|
Animal[] newAnimals = new Animal[animals.length + 1];
|
||||||
for (int i = 0; i < animals.length; i++) {
|
System.arraycopy(animals, 0, newAnimals, 0, animals.length);
|
||||||
newAnimals[i] = animals[i];
|
|
||||||
}
|
|
||||||
newAnimals[newAnimals.length - 1] = animal;
|
newAnimals[newAnimals.length - 1] = animal;
|
||||||
animals = newAnimals;
|
animals = newAnimals;
|
||||||
}
|
}
|
||||||
|
@ -62,6 +60,6 @@ public class PetShelter implements IPetShelter {
|
||||||
@Override
|
@Override
|
||||||
public void listAllAnimals() {
|
public void listAllAnimals() {
|
||||||
for (Animal a : animals)
|
for (Animal a : animals)
|
||||||
System.out.println(a.toString()+"\n");
|
System.out.println(a.toString() + "\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package aval.aa2.Classes;
|
package aval.aa2.Classes;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@ -75,6 +74,6 @@ public class Order {
|
||||||
items.forEach(item -> itemsStringBuilder.append(item).append(", "));
|
items.forEach(item -> itemsStringBuilder.append(item).append(", "));
|
||||||
return String.format("Order #%d: Client ID: %s, Store ID: %s, Order Datetime: %s, Express order: %b, Total cost: %.2f, Items: {%s};",
|
return String.format("Order #%d: Client ID: %s, Store ID: %s, Order Datetime: %s, Express order: %b, Total cost: %.2f, Items: {%s};",
|
||||||
getId(), getClientId(), getStoreId(), getOrderDateTime().toString().replace('T', ' '), isExpressOrder(),
|
getId(), getClientId(), getStoreId(), getOrderDateTime().toString().replace('T', ' '), isExpressOrder(),
|
||||||
getPrice(), itemsStringBuilder.substring(0, itemsStringBuilder.length()-2));
|
getPrice(), itemsStringBuilder.substring(0, itemsStringBuilder.length() - 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ public class OrderManager {
|
||||||
|
|
||||||
public double calculateOrderCost(int id) {
|
public double calculateOrderCost(int id) {
|
||||||
StandardOrderCostCalculator calculator = new StandardOrderCostCalculator();
|
StandardOrderCostCalculator calculator = new StandardOrderCostCalculator();
|
||||||
double cost = searchOrder(id) != null ? calculator.calculateOrderCost(searchOrder(id)): -1;
|
double cost = searchOrder(id) != null ? calculator.calculateOrderCost(searchOrder(id)) : -1;
|
||||||
searchOrder(id).setPrice(cost);
|
searchOrder(id).setPrice(cost);
|
||||||
return cost;
|
return cost;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@ import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
package aval.atp1;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
// YOU MAY ADD IMPORTS HERE
|
||||||
|
|
||||||
|
public class RainfallInfo {
|
||||||
|
private final LocalDate date;
|
||||||
|
private final String location;
|
||||||
|
private final double rainfall;
|
||||||
|
|
||||||
|
public RainfallInfo(LocalDate date, String location, double rainfall) {
|
||||||
|
this.date = date;
|
||||||
|
this.location = location;
|
||||||
|
this.rainfall = rainfall;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate date() {
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String location() {
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double rainfall() {
|
||||||
|
return rainfall;
|
||||||
|
}
|
||||||
|
|
||||||
|
// YOU MAY ADD METHODS HERE
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return String.format("(%s, %s, %.1f)", date(), location(), rainfall());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return date.hashCode() | location.hashCode() | Double.hashCode(rainfall);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,118 @@
|
||||||
|
package aval.atp1;
|
||||||
|
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOError;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.Month;
|
||||||
|
import java.util.*;
|
||||||
|
// YOU MAY ADD IMPORTS HERE
|
||||||
|
|
||||||
|
public class RainfallTest {
|
||||||
|
public static List<RainfallInfo> loadData(String filePath) {
|
||||||
|
List<RainfallInfo> data = null;
|
||||||
|
try {
|
||||||
|
// Check if file is csv
|
||||||
|
if (!filePath.endsWith(".csv")) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Files.exists(Paths.get(filePath))) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1) Read the file and add RainfallInfo objects to a list.
|
||||||
|
Scanner sc = new Scanner(new FileReader(filePath));
|
||||||
|
sc.nextLine(); // skip header
|
||||||
|
|
||||||
|
while (sc.hasNextLine()) {
|
||||||
|
String[] datacomps = sc.nextLine().split(",");
|
||||||
|
LocalDate date = LocalDate.parse(datacomps[0]);
|
||||||
|
String location = datacomps[1];
|
||||||
|
double rainfall = Double.parseDouble(datacomps[2]);
|
||||||
|
if (data == null) data = new ArrayList<>();
|
||||||
|
data.add(new RainfallInfo(date, location, rainfall));
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new IOError(e.getCause()); // repackage as error
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String printLocationData(List<RainfallInfo> data, String loc) {
|
||||||
|
System.out.printf("Rainfall for location %s:\n", loc);
|
||||||
|
// 2) Print rainfall values for the given location
|
||||||
|
data.stream().filter(r -> r.location().equals(loc)).forEach(System.out::println);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<Month, Double> totalPerMonth(List<RainfallInfo> data) {
|
||||||
|
// 3) Calculate and return a map with the total rainfall per month
|
||||||
|
Map<Month, Double> map = new HashMap<>();
|
||||||
|
data.forEach(r -> {
|
||||||
|
Month m = r.date().getMonth();
|
||||||
|
if (map.containsKey(m)) {
|
||||||
|
map.put(m, map.get(m) + r.rainfall());
|
||||||
|
} else {
|
||||||
|
map.put(m, r.rainfall());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String printMapSorted(Map<Month, Double> map) {
|
||||||
|
// 4) Print map sorted by key
|
||||||
|
map.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(e -> System.out.printf("%s: %.1f\n", e.getKey(), e.getValue()));
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// YOU MAY ADD METHODS HERE
|
||||||
|
public static String main() {
|
||||||
|
Test.lst = null;
|
||||||
|
Test.map = null;
|
||||||
|
// Load the file data to the list
|
||||||
|
List<RainfallInfo> rainfallData = loadData("rainfall_data.csv");
|
||||||
|
System.out.printf("Data size: %d\n", rainfallData.size());
|
||||||
|
System.out.printf("Data hash: %d\n", rainfallData.hashCode());
|
||||||
|
System.out.println();
|
||||||
|
|
||||||
|
// Show data for a single town
|
||||||
|
printLocationData(rainfallData, "Braga");
|
||||||
|
System.out.println();
|
||||||
|
|
||||||
|
// Find total rainfall per month
|
||||||
|
Map<Month, Double> rainfallPerMonth = totalPerMonth(rainfallData);
|
||||||
|
|
||||||
|
// Print sorted results
|
||||||
|
printMapSorted(rainfallPerMonth);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
main();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Test {
|
||||||
|
static List<RainfallInfo> lst = new ArrayList<>();
|
||||||
|
static Map<Month, Double> map = new HashMap<>();
|
||||||
|
// Variables used in unit tests (DON'T USE IN YOUR IMPLEMENTATION!):
|
||||||
|
private static final LocalDate[] dates = {
|
||||||
|
LocalDate.parse("2023-03-02"),
|
||||||
|
LocalDate.parse("2023-04-17"),
|
||||||
|
LocalDate.parse("2023-05-27"),
|
||||||
|
};
|
||||||
|
|
||||||
|
static {
|
||||||
|
lst.add(new RainfallInfo(dates[2], "Aveiro", 2.2));
|
||||||
|
lst.add(new RainfallInfo(dates[1], "Braga", 3.0));
|
||||||
|
lst.add(new RainfallInfo(dates[0], "Aveiro", 0.0));
|
||||||
|
lst.add(new RainfallInfo(dates[2], "Braga", 4.0));
|
||||||
|
lst.add(new RainfallInfo(dates[1], "Aveiro", 1.1));
|
||||||
|
map.put(Month.JULY, 7.7);
|
||||||
|
map.put(Month.MAY, 5.5);
|
||||||
|
map.put(Month.JUNE, 6.6);
|
||||||
|
map.put(Month.MARCH, 3.3);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +0,0 @@
|
||||||
# Programação Orientada a Objetos
|
|
||||||
## Exercícios TP
|
|
||||||
### Resoluções para exercícios sugeridos nas aulas Teórico-Práticas
|
|
||||||
|
|
||||||
---
|
|
||||||
*Pode conter erros, caso encontre algum, crie um* [*ticket*](https://github.com/TiagoRG/uaveiro-leci/issues/new)
|
|
|
@ -1,59 +0,0 @@
|
||||||
package tp_codecheck.tp01;
|
|
||||||
|
|
||||||
// Solução do exercício 2
|
|
||||||
|
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
/**
|
|
||||||
This program updates an account balance, according to the table below:
|
|
||||||
Balance Interest Rate Charge
|
|
||||||
> $100,000.00 2.75 % $ 0.00
|
|
||||||
> $25,000.00 2.00 % $ 0.00
|
|
||||||
> $10,000.00 1.00 % $ 0.00
|
|
||||||
>= $0.00 0.00 % $ 0.00
|
|
||||||
< $0.00 0.00 % $ 25.00
|
|
||||||
and prints out the new balance.
|
|
||||||
*/
|
|
||||||
public class BankInterest
|
|
||||||
{
|
|
||||||
public static void main(String[] args)
|
|
||||||
{
|
|
||||||
// Define constants
|
|
||||||
final double HI_RATE = 2.75;
|
|
||||||
final double MD_RATE = 2.00;
|
|
||||||
final double LO_RATE = 1.00;
|
|
||||||
final double ZERO_RATE = 0.00;
|
|
||||||
final double DEB_CHG = -25.00;
|
|
||||||
|
|
||||||
final double HI_LIMIT = 100000.00;
|
|
||||||
final double MD_LIMIT = 25000.00;
|
|
||||||
final double LO_LIMIT = 10000.00;
|
|
||||||
final double ZERO_LIMIT = 0.00;
|
|
||||||
|
|
||||||
// Print prompt to enter a current balence
|
|
||||||
System.out.print("Enter current balance: ");
|
|
||||||
|
|
||||||
// Read balance
|
|
||||||
Scanner in = new Scanner(System.in);
|
|
||||||
double balance = in.nextDouble();
|
|
||||||
|
|
||||||
// Determine interest rate (or charge) based on current balance
|
|
||||||
// to compute new balance
|
|
||||||
|
|
||||||
// Your work here
|
|
||||||
|
|
||||||
double newBalance;
|
|
||||||
if (balance > HI_LIMIT)
|
|
||||||
newBalance = balance*(1+HI_RATE/100);
|
|
||||||
else if (balance > MD_LIMIT)
|
|
||||||
newBalance = balance*(1+MD_RATE/100);
|
|
||||||
else if (balance > LO_LIMIT)
|
|
||||||
newBalance = balance*(1+LO_RATE/100);
|
|
||||||
else if (balance < ZERO_LIMIT)
|
|
||||||
newBalance = balance+DEB_CHG;
|
|
||||||
else
|
|
||||||
newBalance = balance;
|
|
||||||
|
|
||||||
System.out.printf("%.2f\n", newBalance);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
package tp_codecheck.tp01;
|
|
||||||
|
|
||||||
// Solução do exercício 3
|
|
||||||
|
|
||||||
public class Table {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
System.out.printf("%s | %s | %s | %s\n", "n", "Hn", "log n", "Hn - log n");
|
|
||||||
int n = 1;
|
|
||||||
while (n <= 1000000) {
|
|
||||||
double f1 = harmonic(n);
|
|
||||||
double f2 = Math.log((double)n);
|
|
||||||
System.out.printf("%d | %.3f | %.3f | %.9f\n", n, f1, f2, f1-f2);
|
|
||||||
n *= 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Computes the Harmonic number Hn = 1 + 1/2 + 1/3 + ... + 1/n.
|
|
||||||
*/
|
|
||||||
private static double harmonic(int n) {
|
|
||||||
double sum = 0;
|
|
||||||
for (int i = 1; i <= n; i++) {
|
|
||||||
sum += 1/(float)i;
|
|
||||||
}
|
|
||||||
return sum;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
package tp_codecheck.tp01;
|
|
||||||
|
|
||||||
// Solução do exercício 1
|
|
||||||
|
|
||||||
/*
|
|
||||||
This is a short Java program to convert
|
|
||||||
a temperature from Celsius to Fahrenheit.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// You may want to import stuff here...
|
|
||||||
|
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
public class Temperature {
|
|
||||||
// Create a Scanner to parse standard input:
|
|
||||||
private static Scanner sc = new Scanner(System.in);
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
// Put your code here
|
|
||||||
System.out.print("Celsius? ");
|
|
||||||
double celcius = sc.nextDouble();
|
|
||||||
double fahrenheit = 1.8*celcius+32;
|
|
||||||
System.out.printf("%f C = %f F\n", celcius, fahrenheit);
|
|
||||||
|
|
||||||
System.out.println("THE END");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// JMR 2023
|
|
|
@ -1,23 +0,0 @@
|
||||||
# Exercícios de Arrays
|
|
||||||
|
|
||||||
## Ex1
|
|
||||||
```java
|
|
||||||
final int LENGHT = 100;
|
|
||||||
int[] a = new int[LENGHT];
|
|
||||||
// Code for filling a ommited
|
|
||||||
for (int = 99; i >= 0; i--)
|
|
||||||
{
|
|
||||||
System.out.print(a[i]);
|
|
||||||
if (i > 0) { System.out.print(', '); }
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Ex2
|
|
||||||
```java
|
|
||||||
int[] numbers = new int[100];
|
|
||||||
for (int k = 0; k < numbers.length; k++)
|
|
||||||
{
|
|
||||||
numbers[k] = k + 1;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
package tp_codecheck.tp02;
|
|
||||||
|
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
public class NumberOfDays {
|
|
||||||
public static void main(String[] args)
|
|
||||||
{
|
|
||||||
// Declare and initialize daysOfMonth
|
|
||||||
int[] daysOfMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
|
||||||
|
|
||||||
Scanner in = new Scanner(System.in);
|
|
||||||
System.out.print("Month (1 - 12): ");
|
|
||||||
int month = in.nextInt();
|
|
||||||
System.out.print("Year: ");
|
|
||||||
int year = in.nextInt();
|
|
||||||
|
|
||||||
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
|
|
||||||
// It's a leap year. Adjust the entry for February
|
|
||||||
daysOfMonth[1]+=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the number of days in the given month
|
|
||||||
int days = daysOfMonth[month-1];
|
|
||||||
|
|
||||||
System.out.println("Number of days: " + days);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
package tp_codecheck.tp02;
|
|
||||||
|
|
||||||
public class Numbers {
|
|
||||||
public static void main(String[] args) {
|
|
||||||
// Different arrays will be substituted here.
|
|
||||||
int[] values = { 3, 1, 4, 1, 5, 9 };
|
|
||||||
int[] newValues = new int[values.length/2];
|
|
||||||
|
|
||||||
for (int x = 0; x < values.length; x+=2) {
|
|
||||||
newValues[x/2] = values[x];
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < newValues.length; i++) {
|
|
||||||
System.out.println(newValues[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
# Tabela Exercício 1 de Strings
|
|
||||||
|
|
||||||
| Question | Answer |
|
|
||||||
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------|
|
|
||||||
| What is the length of the string below?<br>String str = "Java Program" | 12 |
|
|
||||||
| With str as defined above, give a call to the substring method that returns the substring "gram". | str.substring(8) |
|
|
||||||
| Use the string concatenation operator to change the string variable str to contain the string "Java Programming". | str += "ming" |
|
|
||||||
| What does the following statement sequence print?<br><br>String str = "Harry";<br>int n = str.length();<br>String mystery = str.substring(0, 1) + str.substring(n - 1, n);<br>System.out.println(mystery); | Hy |
|
|
||||||
| Consider the following statement sequence. If the user provides the input John Q. Public, what is printed? If an error occurs, type error.<br><br>Scanner in = new Scanner(System.in);<br>String first = in.next();<br>String last = in.next();<br>System.out.println(last + ", " + first); | Q., John |
|
|
|
@ -1,12 +0,0 @@
|
||||||
package tp_codecheck.tp02;
|
|
||||||
|
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
public class Words {
|
|
||||||
public static void main(String[] args) {
|
|
||||||
Scanner in = new Scanner(System.in);
|
|
||||||
String word = in.next();
|
|
||||||
word = word.charAt(word.length()-1) + word.substring(1, word.length()-1) + word.charAt(0);
|
|
||||||
System.out.println(word);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,66 +0,0 @@
|
||||||
package tp_codecheck.tp03.part1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
A simulated traffic light.
|
|
||||||
*/
|
|
||||||
public class TrafficLight1
|
|
||||||
{
|
|
||||||
private String color;
|
|
||||||
private int reds;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Constructs a green traffic light.
|
|
||||||
*/
|
|
||||||
public TrafficLight1()
|
|
||||||
{
|
|
||||||
this.color = "green";
|
|
||||||
this.reds = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Constructs a traffic light.
|
|
||||||
@param initialColor the initial color "green", "yellow", or "red"
|
|
||||||
*/
|
|
||||||
public TrafficLight1(String initialColor)
|
|
||||||
{
|
|
||||||
this.color = initialColor;
|
|
||||||
this.reds = initialColor == "red" ? 1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Moves this traffic light to the next color.
|
|
||||||
*/
|
|
||||||
public void next()
|
|
||||||
{
|
|
||||||
switch (this.color) {
|
|
||||||
case "red":
|
|
||||||
this.color = "green";
|
|
||||||
break;
|
|
||||||
case "green":
|
|
||||||
this.color = "yellow";
|
|
||||||
break;
|
|
||||||
case "yellow":
|
|
||||||
this.color = "red";
|
|
||||||
this.reds += 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns the current color of this traffic light.
|
|
||||||
@return the current color
|
|
||||||
*/
|
|
||||||
public String getColor()
|
|
||||||
{
|
|
||||||
return this.color;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Counts how often this traffic light has been red.
|
|
||||||
@return the number of times this traffic light has been red
|
|
||||||
*/
|
|
||||||
public int getReds()
|
|
||||||
{
|
|
||||||
return this.reds;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,68 +0,0 @@
|
||||||
package tp_codecheck.tp03.part1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
A simulated traffic light.
|
|
||||||
*/
|
|
||||||
public class TrafficLight2
|
|
||||||
{
|
|
||||||
private int steps;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Constructs a green traffic light.
|
|
||||||
*/
|
|
||||||
public TrafficLight2()
|
|
||||||
{
|
|
||||||
this.steps = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Constructs a traffic light.
|
|
||||||
@param initialColor the initial color "green", "yellow", or "red"
|
|
||||||
*/
|
|
||||||
public TrafficLight2(String initialColor)
|
|
||||||
{
|
|
||||||
switch (initialColor) {
|
|
||||||
case "green":
|
|
||||||
this.steps = 0;
|
|
||||||
break;
|
|
||||||
case "yellow":
|
|
||||||
this.steps = 1;
|
|
||||||
break;
|
|
||||||
case "red":
|
|
||||||
this.steps = 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Moves this traffic light to the next color.
|
|
||||||
*/
|
|
||||||
public void next()
|
|
||||||
{
|
|
||||||
steps++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns the current color of this traffic light.
|
|
||||||
@return the current color
|
|
||||||
*/
|
|
||||||
public String getColor()
|
|
||||||
{
|
|
||||||
int rem = (this.steps + 1) % 3;
|
|
||||||
if (rem == 0)
|
|
||||||
return "red";
|
|
||||||
else if (rem == 1)
|
|
||||||
return "green";
|
|
||||||
else
|
|
||||||
return "yellow";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Counts how often this traffic light has been red.
|
|
||||||
@return the number of times this traffic light has been red
|
|
||||||
*/
|
|
||||||
public int getReds()
|
|
||||||
{
|
|
||||||
return (this.steps + 1) / 3;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
package tp_codecheck.tp03.part2;
|
|
||||||
|
|
||||||
public class RentalCar {
|
|
||||||
private boolean rented;
|
|
||||||
private static int rentedCount = 0;
|
|
||||||
private static int availableCount = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a rental car.
|
|
||||||
*/
|
|
||||||
public RentalCar() {
|
|
||||||
// your work here
|
|
||||||
rented = false;
|
|
||||||
RentalCar.availableCount++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get number of cars available.
|
|
||||||
*
|
|
||||||
* @return count of cars that are available
|
|
||||||
*/
|
|
||||||
public static int numAvailable() {
|
|
||||||
// your work here
|
|
||||||
return RentalCar.availableCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get number of cars rented.
|
|
||||||
*
|
|
||||||
* @return count of cars that are rented
|
|
||||||
*/
|
|
||||||
public static int numRented() {
|
|
||||||
// your work here
|
|
||||||
return RentalCar.rentedCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Try to rent this car.
|
|
||||||
*
|
|
||||||
* @return true if the car was successfully rented, false if it was already
|
|
||||||
* rented
|
|
||||||
*/
|
|
||||||
public boolean rentCar() {
|
|
||||||
// your work here
|
|
||||||
if (this.rented) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
this.rented = true;
|
|
||||||
RentalCar.rentedCount++;
|
|
||||||
RentalCar.availableCount--;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return rented car.
|
|
||||||
*
|
|
||||||
* @return true if the car was previously rented and is now returned,
|
|
||||||
* false if it was not previously rented
|
|
||||||
*/
|
|
||||||
public boolean returnCar() {
|
|
||||||
// your work here
|
|
||||||
if (this.rented) {
|
|
||||||
this.rented = false;
|
|
||||||
RentalCar.rentedCount--;
|
|
||||||
RentalCar.availableCount++;
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -13,6 +13,27 @@ public class DateYMD {
|
||||||
this.year = year;
|
this.year = year;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static boolean validMonth(int month) {
|
||||||
|
return month >= 1 && month <= 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int monthDays(int month, int year) {
|
||||||
|
if (!validMonth(month))
|
||||||
|
return -1;
|
||||||
|
int[] daysPerMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
||||||
|
if (month == 2 && isLeapYear(year))
|
||||||
|
return 29;
|
||||||
|
return daysPerMonth[month - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
static boolean isLeapYear(int year) {
|
||||||
|
return year % 100 == 0 ? year % 400 == 0 : year % 4 == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean validDate(int day, int month, int year) {
|
||||||
|
return day >= 1 && day <= monthDays(month, year);
|
||||||
|
}
|
||||||
|
|
||||||
public void set(int day, int month, int year) {
|
public void set(int day, int month, int year) {
|
||||||
if (!validDate(day, month, year))
|
if (!validDate(day, month, year))
|
||||||
throw new IllegalArgumentException("Invalid date");
|
throw new IllegalArgumentException("Invalid date");
|
||||||
|
@ -71,24 +92,4 @@ public class DateYMD {
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%04d-%02d-%02d", this.year, this.month, this.day);
|
return String.format("%04d-%02d-%02d", this.year, this.month, this.day);
|
||||||
}
|
}
|
||||||
static boolean validMonth(int month) {
|
|
||||||
return month >= 1 && month <= 12;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int monthDays(int month, int year) {
|
|
||||||
if (!validMonth(month))
|
|
||||||
return -1;
|
|
||||||
int[] daysPerMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
|
||||||
if (month == 2 && isLeapYear(year))
|
|
||||||
return 29;
|
|
||||||
return daysPerMonth[month - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
static boolean isLeapYear(int year) {
|
|
||||||
return year % 100 == 0 ? year % 400 == 0 : year % 4 == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean validDate(int day, int month, int year) {
|
|
||||||
return day >= 1 && day <= monthDays(month, year);
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue