diff --git a/src/garage/MainGarage.java b/src/garage/MainGarage.java index f803f9a..0d866ca 100644 --- a/src/garage/MainGarage.java +++ b/src/garage/MainGarage.java @@ -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."); + } }