From e3156bbc5b038465ae0e5e2feda521bd47517f72 Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Thu, 25 Sep 2025 17:41:05 +0200 Subject: [PATCH] =?UTF-8?q?Controllo=20validit=C3=A0=20targa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/eserciziogarage/Garage.java | 41 ++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 13 deletions(-) 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() { + } }