immettiNuovoVeicolo

This commit is contained in:
La Programmatrice Verde 2025-10-28 09:41:41 +01:00
parent 27c488a851
commit 969a16cb8d

View File

@ -4,18 +4,28 @@
*/
package garage;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.InputMismatchException;
import java.util.Scanner;
import veicoli.Automobile;
import veicoli.Furgone;
import veicoli.Motocicletta;
import veicoli.VeicoloAMotore;
/**
*
* @author Verde
*/
public class MainGarage {
static Scanner sc = new Scanner(System.in);
static Garage garage = new Garage();
public static void main() {
int scelta = -1;
int scelta = -1;
do {
System.out.println("Scegliere un'opzione:");
@ -33,7 +43,7 @@ public class MainGarage {
case 0:
break;
case 1:
immettiNuovoVeicolo();
pausa();
break;
case 2:
@ -49,8 +59,7 @@ public class MainGarage {
pausa();
break;
}
}
catch (InputMismatchException _) {
} catch (InputMismatchException _) {
System.out.println("Errore: scelta non valida.");
pausa();
}
@ -61,4 +70,159 @@ public class MainGarage {
System.out.println("Premere un tasto per continuare. . .");
sc.nextLine();
}
static void immettiNuovoVeicolo() {
int annoImmatricolazione;
String marca;
String tipoAlimentazione;
int cilindrata;
int capacitaCarico;
int numPorte;
String tipologia;
int numTempiMotore;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
Date annoImmatricolazioneDate;
boolean error;
Date now = new Date();
String scelta;
VeicoloAMotore veicolo = null;
System.out.print("Inserisci la marca: ");
marca = sc.nextLine().trim();
do {
error = false;
try {
System.out.print("Inserisci l'anno di immatricolazione: ");
annoImmatricolazioneDate = sdf.parse(sc.nextLine());
if (annoImmatricolazioneDate.after(now)) {
System.out.println("Errore: il veicolo non può esser stato immatricolato nel futuro.");
pausa();
error = true;
}
annoImmatricolazione = Integer.parseInt(annoImmatricolazioneDate.toString());
} catch (ParseException _) {
System.out.println("Errore nella lettura della data.");
pausa();
error = true;
}
} while (error);
System.out.print("Inserisci il tipo di alimentazione: ");
tipoAlimentazione = sc.nextLine().trim();
// TODO: controlli sull'alimentazione (niente veicoli alimentati a scoregge)
do {
error = false;
try {
System.out.print("Inserire la cilindrata: ");
cilindrata = sc.nextInt();
if (cilindrata <= 0) {
System.out.println("Errore: la cilindrata deve essere un numero positivo.");
pausa();
error = true;
}
} catch (InputMismatchException _) {
System.out.println("Errore nella lettura della cilindrata.");
pausa();
error = true;
}
} while (error);
do {
error = false;
System.out.println("Opzioni possibili:");
System.out.println("Furgone");
System.out.println("Automobile");
System.out.println("Motocicletta");
System.out.print("Inserire la tipologia di veicolo: ");
scelta = sc.nextLine().trim().toLowerCase();
switch (scelta) {
case "furgone":
do {
error = false;
try {
System.out.print("Inserire la capacità di carico: ");
capacitaCarico = sc.nextInt();
if (capacitaCarico <= 0) {
System.out.println("Errore: la capacità di carico deve essere un numero positivo.");
pausa();
error = true;
}
} catch (InputMismatchException _) {
System.out.println("Errore nella lettura della capacità di carico.");
pausa();
error = true;
}
} while (error);
veicolo = new Furgone();
break;
case "automobile":
do {
error = false;
try {
System.out.print("Inserire il numero di porte: ");
numPorte = sc.nextInt();
if (numPorte <= 2) {
System.out.println("Errore: il numero di porte deve essere un numero positivo e non può essere inferiore a 2.");
pausa();
error = true;
}
} catch (InputMismatchException _) {
System.out.println("Errore nella lettura del numero di porte.");
pausa();
error = true;
}
} while (error);
veicolo = new Automobile();
break;
case "motocicletta":
System.out.print("Inserire la tipologia della motocicletta: ");
tipologia = sc.nextLine();
do {
error = false;
try {
System.out.println("Opzioni possibli");
System.out.println("2");
System.out.println("4");
System.out.print("Inserisci il numero di tempi del motore: ");
numTempiMotore = sc.nextInt();
switch (numTempiMotore) {
case 2,4:
break;
default:
System.out.println("Errore: opzione non valida.");
pausa();
error = true;
break;
}
} catch (InputMismatchException _) {
System.out.println("Errore nella lettura del numero di tempi del motore.");
pausa();
error = true;
}
} while (error);
veicolo = new Motocicletta();
break;
default:
System.out.println("Opzione non valida.");
pausa();
error = true;
break;
}
} while (error);
garage.immettiNuovoVeicolo(veicolo);
System.out.println("Veicolo inserito con successo.");
}
}