102 lines
3.5 KiB
Java
102 lines
3.5 KiB
Java
package aula04;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.Scanner;
|
|
|
|
public class CarDemo {
|
|
|
|
static Scanner sc = new Scanner(System.in);
|
|
|
|
static int registerCars(Car[] cars) {
|
|
// TODO: pede dados dos carros ao utilizador e acrescenta ao vetor
|
|
// registo de carros termina quando o utilizador inserir uma linha vazia
|
|
// devolve número de carros registados
|
|
for (int i = 0; i < 10; i++) {
|
|
boolean validData = false;
|
|
while (!validData) {
|
|
System.out.print("Insira dados do carro (marca modelo ano quilómetros): ");
|
|
String input = sc.nextLine();
|
|
if (input.isEmpty()) return i;
|
|
String[] parts = input.split(" ");
|
|
validData = validateData(parts);
|
|
if (!validData) {
|
|
System.out.println("Dados mal formatados. Tente novamente.");
|
|
} else {
|
|
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]));
|
|
}
|
|
}
|
|
}
|
|
return 10;
|
|
}
|
|
|
|
static boolean validateData(String[] parts) {
|
|
if (parts.length < 4) return false;
|
|
try {
|
|
Integer.parseInt(parts[parts.length - 1]);
|
|
if (String.format("%d", Integer.parseInt(parts[parts.length - 2])).length() != 4) return false;
|
|
} catch (NumberFormatException e) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
static void registerTrips(Car[] cars, int numCars) {
|
|
// TODO: pede dados das viagens ao utilizador e atualiza informação do carro
|
|
// registo de viagens termina quando o utilizador inserir uma linha vazia
|
|
String input;
|
|
while (true) {
|
|
System.out.print("Registe uma viagem no formato \"carro:distância\": ");
|
|
if ((input = sc.nextLine()).isEmpty()) break;
|
|
String[] parts = input.split(":");
|
|
if (parts.length != 2) {
|
|
System.out.println("Dados mal formatados. Tente novamente.");
|
|
} else {
|
|
try {
|
|
int car = Integer.parseInt(parts[0]);
|
|
int distance = Integer.parseInt(parts[1]);
|
|
if (car < 0 || car >= numCars || distance <= 0) {
|
|
System.out.println("Dados mal formatados. Tente novamente.");
|
|
} else {
|
|
cars[car].drive(distance);
|
|
}
|
|
} catch (NumberFormatException e) {
|
|
System.out.println("Dados mal formatados. Tente novamente.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
static void listCars(Car[] cars) {
|
|
System.out.println("\nCarros registados: ");
|
|
// TODO: lista todos os carros registados
|
|
// Exemplo de resultado
|
|
// Carros registados:
|
|
// Toyota Camry, 2010, kms: 234346
|
|
// Renault Megane Sport Tourer, 2015, kms: 32536
|
|
for (Car car : cars) {
|
|
if (car != null) {
|
|
System.out.println(car);
|
|
}
|
|
}
|
|
|
|
System.out.println("\n");
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
|
|
Car[] cars = new Car[10];
|
|
|
|
int numCars = registerCars(cars);
|
|
|
|
if (numCars > 0) {
|
|
listCars(cars);
|
|
registerTrips(cars, numCars);
|
|
listCars(cars);
|
|
}
|
|
|
|
sc.close();
|
|
|
|
}
|
|
} |