Miglioria IngressoAuto e aggiunta UscitaAuto

This commit is contained in:
La Programmatrice Verde 2025-09-25 21:55:02 +02:00
parent 52fe4e6334
commit 13922530b7
3 changed files with 59 additions and 22 deletions

View File

@ -4,16 +4,40 @@
*/
package eserciziogarage;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* @author Verde
*/
public class Auto {
private final String regexTarga = "[A-Z]{2}[0-9]{3}[A-Z]{2}";
String targa;
public Auto(String p_targa){
this.targa = p_targa;
Scanner sc = new Scanner(System.in);
public Auto() throws Exception{
System.out.println("Inserire la targa dell'auto: ");
this.targa = VerificaTarga(sc.nextLine().toUpperCase());
}
private String VerificaTarga(String p_targa) throws Exception{
String ritorno = "";
if (!this.ControlloRegEx(p_targa, regexTarga)) {
throw new Exception("Errore: targa non valida. Riprovare.");
} else {
ritorno = p_targa;
}
return ritorno;
}
private boolean ControlloRegEx(String p_stringa, String p_regex) {
Pattern pattern = Pattern.compile(p_regex);
Matcher matcher = pattern.matcher(p_stringa);
return matcher.find();
}
public String GetTarga(){
return this.targa;
}

View File

@ -51,7 +51,7 @@ public class EsercizioGarage {
Pausa();
break;
case 4:
garage.UscitaAuto();
System.out.println(garage.UscitaAuto());
Pausa();
break;
default:

View File

@ -5,8 +5,6 @@
package eserciziogarage;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
@ -34,30 +32,27 @@ public class Garage {
return p_i;
}
private boolean ControlloRegEx(String p_stringa, String p_regex) {
Pattern pattern = Pattern.compile(p_regex);
Matcher matcher = pattern.matcher(p_stringa);
return matcher.find();
private int TrovaTarga(String p_targa) {
boolean exit = false;
int i = 0;
for (; i < this.veicoli.length && !exit; i++) {
if (veicoli[i].GetTarga().equals(p_targa)) {
exit = true;
}
}
return exit ? --i : -1;
}
public String IngressoAuto() {
Scanner sc = new Scanner(System.in);
String targa, ritorno;
final String regexTarga = "[A-Z]{2}[0-9]{3}[A-Z]{2}";
do {
System.out.println("Inserire la targa dell'auto: ");
targa = sc.nextLine().toUpperCase();
if (!ControlloRegEx(targa, regexTarga)) {
System.out.println("Errore: targa non valida. Riprovare.");
}
} while (!ControlloRegEx(targa, regexTarga));
String ritorno;
try {
veicoli[this.NextPosizioneLibera()] = new Auto(targa);
veicoli[this.NextPosizioneLibera()] = new Auto();
ritorno = "L'auto è posteggiata nella posizione %d".formatted(posizioneLibera++);
} catch (ArrayIndexOutOfBoundsException e) {
ritorno = "Errore: il garage è pieno.";
} catch (Exception e) {
ritorno = e.getMessage();
}
return ritorno;
@ -71,6 +66,24 @@ public class Garage {
return "I posti liberi sono da %d a %d".formatted(--posizioneLibera, veicoli.length);
}
public void UscitaAuto() {
public String UscitaAuto() {
Scanner sc = new Scanner(System.in);
String targa, ritorno;
int posizioneAuto;
System.out.println("Inserire la targa dell'auto: ");
targa = sc.nextLine().toUpperCase();
posizioneAuto = this.TrovaTarga(targa);
if (posizioneAuto != -1) {
this.veicoli[posizioneAuto] = null;
ritorno = "L'auto è uscita con successo";
}
else{
ritorno = "Errore: targa non trovata. Riprovare.";
}
return ritorno;
}
}