diff --git a/src/garage/MainGarage.java b/src/garage/MainGarage.java index 71273b2..5fad51f 100644 --- a/src/garage/MainGarage.java +++ b/src/garage/MainGarage.java @@ -23,6 +23,7 @@ public class MainGarage { static Scanner sc = new Scanner(System.in); static Garage garage = new Garage(); + static final String ERRORE_OPZIONE = "Opzione non valida."; public static void main() { int scelta = -1; @@ -55,7 +56,7 @@ public class MainGarage { pausa(); break; default: - System.out.println("Opzione non valida."); + System.out.println(ERRORE_OPZIONE); pausa(); break; } @@ -82,7 +83,7 @@ public class MainGarage { int numTempiMotore = 0; boolean error = false; - String scelta; + int scelta; VeicoloAMotore veicolo = null; int posizioneOccupata; @@ -97,35 +98,45 @@ public class MainGarage { cilindrata = cilindrata(); do { - 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(); + try { + error = false; + System.out.println("Opzioni possibili:"); + System.out.println("1. Furgone"); + System.out.println("2. Automobile"); + System.out.println("3. Motocicletta"); + System.out.print("Inserire la tipologia di veicolo tra le opzioni sopra: "); + scelta = sc.nextInt(); + sc.nextLine(); - switch (scelta) { - case "furgone": - capacitaCarico = capacitaCarico(); - veicolo = new Furgone(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, capacitaCarico); - break; - case "automobile": - numPorte = numPorte(); - veicolo = new Automobile(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, numPorte); - break; - case "motocicletta": - System.out.print("Inserire la tipologia della motocicletta: "); - tipologia = sc.nextLine(); + switch (scelta) { + case 1: + capacitaCarico = capacitaCarico(); + veicolo = new Furgone(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, + capacitaCarico); + break; + case 2: + numPorte = numPorte(); + veicolo = new Automobile(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, numPorte); + break; + case 3: + System.out.print("Inserire la tipologia della motocicletta: "); + tipologia = sc.nextLine(); - numTempiMotore = numTempiMotore(); - veicolo = new Motocicletta(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, tipologia, - numTempiMotore); - break; - default: - System.out.println("Opzione non valida."); - pausa(); - error = true; - break; + numTempiMotore = numTempiMotore(); + veicolo = new Motocicletta(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, + tipologia, + numTempiMotore); + break; + default: + System.out.println(ERRORE_OPZIONE); + pausa(); + error = true; + break; + } + } catch (InputMismatchException _) { + System.out.println(ERRORE_OPZIONE); + pausa(); + error = true; } } while (error); @@ -142,6 +153,13 @@ public class MainGarage { Date annoImmatricolazioneDate; SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); Date now = new Date(); + String annoIniziale = "1900"; + Date dataIniziale = null; + try { + dataIniziale = sdf.parse(annoIniziale); + } catch (ParseException _) { + System.out.println("Errore non previsto nell'inizializzazione della data."); + } int ritorno = 0; do { @@ -154,6 +172,11 @@ public class MainGarage { System.out.println("Errore: il veicolo non può esser stato immatricolato nel futuro."); pausa(); error = true; + } else if (annoImmatricolazioneDate.before(dataIniziale)) { + System.out.println( + "Errore: il veicolo non può esser stato immatricolato prima del " + annoIniziale + "."); + pausa(); + error = true; } else { ritorno = Integer.parseInt(sdf.format(annoImmatricolazioneDate)); } @@ -201,6 +224,7 @@ public class MainGarage { try { System.out.print("Inserire la capacità di carico: "); ritorno = sc.nextInt(); + sc.nextLine(); if (ritorno <= 0) { System.out.println("Errore: la capacità di carico deve essere un numero positivo."); @@ -225,8 +249,9 @@ public class MainGarage { try { System.out.print("Inserire il numero di porte: "); ritorno = sc.nextInt(); + sc.nextLine(); - if (ritorno <= 2) { + if (ritorno < 2) { System.out.println( "Errore: il numero di porte deve essere un numero positivo e non può essere inferiore a 2."); pausa(); @@ -245,7 +270,7 @@ public class MainGarage { static int numTempiMotore() { boolean error; int ritorno = 0; - + do { error = false; @@ -253,8 +278,9 @@ public class MainGarage { System.out.println("Opzioni possibili"); System.out.println("2"); System.out.println("4"); - System.out.print("Inserisci il numero di tempi del motore: "); + System.out.print("Inserisci il numero di tempi del motore tra le opzioni possibili: "); ritorno = sc.nextInt(); + sc.nextLine(); switch (ritorno) { case 2, 4: