Controllo validità targa

This commit is contained in:
La Programmatrice Verde 2025-09-25 17:41:05 +02:00
parent 6632a5535a
commit e3156bbc5b

View File

@ -5,6 +5,8 @@
package eserciziogarage; package eserciziogarage;
import java.util.Scanner; import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* *
@ -14,41 +16,53 @@ public class Garage {
Auto[] veicoli; Auto[] veicoli;
private int posizioneLibera = 0; private int posizioneLibera = 0;
public Garage(int p_dimensione) { public Garage(int p_dimensione) {
this.veicoli = new Auto[p_dimensione]; this.veicoli = new Auto[p_dimensione];
} }
private int NextPosizioneLibera() { private int NextPosizioneLibera() {
int i = 0; int i = 0;
for (; i < this.veicoli.length && this.veicoli[i] != null; ++i) for (; i < this.veicoli.length && this.veicoli[i] != null; ++i)
; ;
return i; return i;
} }
private int NextPosizioneLibera(int p_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; 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() { public String IngressoAuto() {
Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(System.in);
String targa, ritorno; 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: "); do {
targa = sc.nextLine(); 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); veicoli[this.NextPosizioneLibera()] = new Auto(targa);
ritorno = "L'auto è posteggiata nella posizione %d".formatted(posizioneLibera++); ritorno = "L'auto è posteggiata nella posizione %d".formatted(posizioneLibera++);
} } catch (ArrayIndexOutOfBoundsException e) {
catch(ArrayIndexOutOfBoundsException e){
ritorno = "Errore: il garage è pieno."; ritorno = "Errore: il garage è pieno.";
} }
return ritorno; return ritorno;
} }
public String GetPostiOccupati() { public String GetPostiOccupati() {
return "I posti occupati sono da 0 a %d".formatted(--posizioneLibera); return "I posti occupati sono da 0 a %d".formatted(--posizioneLibera);
} }
@ -56,6 +70,7 @@ public class Garage {
public String GetPostiLiberi() { public String GetPostiLiberi() {
return "I posti liberi sono da %d a %d".formatted(--posizioneLibera, veicoli.length); return "I posti liberi sono da %d a %d".formatted(--posizioneLibera, veicoli.length);
} }
public void UscitaAuto(){} public void UscitaAuto() {
}
} }