/* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ 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; do { System.out.println("Scegliere un'opzione:"); System.out.println("1. Immettere nuovo veicolo"); System.out.println("2. Estrazione veicolo"); System.out.println("3. Stampa situazione"); System.out.println("0. Esci"); System.out.print("Opzione: "); try { scelta = sc.nextInt(); sc.nextLine(); switch (scelta) { case 0: break; case 1: immettiNuovoVeicolo(); pausa(); break; case 2: pausa(); break; case 3: pausa(); break; default: System.out.println("Opzione non valida."); pausa(); break; } } catch (InputMismatchException _) { System.out.println("Errore: scelta non valida."); pausa(); } } while (scelta != 0); } public static void pausa() { System.out.println("Premere un tasto per continuare. . ."); sc.nextLine(); } static void immettiNuovoVeicolo() { int annoImmatricolazione = 0; String marca; String tipoAlimentazione; int cilindrata = 0; int capacitaCarico = 0; int numPorte = 0; String tipologia; int numTempiMotore = 0; 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(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, capacitaCarico); 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(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, numPorte); 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(annoImmatricolazione, marca, tipoAlimentazione, cilindrata, tipologia, numTempiMotore); break; default: System.out.println("Opzione non valida."); pausa(); error = true; break; } } while (error); garage.immettiNuovoVeicolo(veicolo); System.out.println("Veicolo inserito con successo."); } }