diff --git a/src/eserciziogarage/Garage.java b/src/eserciziogarage/Garage.java index 1c2a92a..6ccd96e 100644 --- a/src/eserciziogarage/Garage.java +++ b/src/eserciziogarage/Garage.java @@ -5,6 +5,8 @@ package eserciziogarage; import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * @@ -14,41 +16,53 @@ public class Garage { Auto[] veicoli; private int posizioneLibera = 0; - + public Garage(int p_dimensione) { this.veicoli = new Auto[p_dimensione]; } - + private int NextPosizioneLibera() { int i = 0; for (; i < this.veicoli.length && this.veicoli[i] != null; ++i) ; return i; } - + private int NextPosizioneLibera(int p_i) { - for (; p_i < this.veicoli.length && this.veicoli[p_i] != null; ++p_i); + for (; p_i < this.veicoli.length && this.veicoli[p_i] != null; ++p_i) + ; 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(); + } + public String IngressoAuto() { Scanner sc = new Scanner(System.in); String targa, ritorno; + final String regexTarga = "[a-zA-Z]{2}[0-9]{3}[a-zA-Z]{2}"; - System.out.println("Inserire la targa dell'auto: "); - targa = sc.nextLine(); + do { + System.out.println("Inserire la targa dell'auto: "); + targa = sc.nextLine(); + if (!ControlloRegEx(targa, regexTarga)) { + System.out.println("Errore: targa non valida. Riprovare."); + } + } while (!ControlloRegEx(targa, regexTarga)); - try{ + try { veicoli[this.NextPosizioneLibera()] = new Auto(targa); ritorno = "L'auto è posteggiata nella posizione %d".formatted(posizioneLibera++); - } - catch(ArrayIndexOutOfBoundsException e){ + } catch (ArrayIndexOutOfBoundsException e) { ritorno = "Errore: il garage è pieno."; } return ritorno; } - + public String GetPostiOccupati() { return "I posti occupati sono da 0 a %d".formatted(--posizioneLibera); } @@ -56,6 +70,7 @@ public class Garage { public String GetPostiLiberi() { return "I posti liberi sono da %d a %d".formatted(--posizioneLibera, veicoli.length); } - - public void UscitaAuto(){} + + public void UscitaAuto() { + } }