Migliorie UX

This commit is contained in:
La Programmatrice Verde 2025-10-30 17:17:50 +01:00
parent 9cad5b1af9
commit 50bc6235ad

View File

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