diff --git a/src/eserciziogarage/Auto.java b/src/eserciziogarage/Auto.java index a2856a3..bb4c701 100644 --- a/src/eserciziogarage/Auto.java +++ b/src/eserciziogarage/Auto.java @@ -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; } diff --git a/src/eserciziogarage/EsercizioGarage.java b/src/eserciziogarage/EsercizioGarage.java index 0f7da7f..bb0da44 100644 --- a/src/eserciziogarage/EsercizioGarage.java +++ b/src/eserciziogarage/EsercizioGarage.java @@ -51,7 +51,7 @@ public class EsercizioGarage { Pausa(); break; case 4: - garage.UscitaAuto(); + System.out.println(garage.UscitaAuto()); Pausa(); break; default: diff --git a/src/eserciziogarage/Garage.java b/src/eserciziogarage/Garage.java index 2a38850..5029cd3 100644 --- a/src/eserciziogarage/Garage.java +++ b/src/eserciziogarage/Garage.java @@ -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; } }