From 59e7e1f2564c07b3afd81aa32a2d5ad30dc0f3c8 Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Thu, 25 Sep 2025 23:20:42 +0200 Subject: [PATCH] Perfezionamento controllo duplicati --- src/eserciziogarage/Garage.java | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/eserciziogarage/Garage.java b/src/eserciziogarage/Garage.java index af13373..11bcb55 100644 --- a/src/eserciziogarage/Garage.java +++ b/src/eserciziogarage/Garage.java @@ -36,10 +36,18 @@ public class Garage { } private boolean TrovaDuplicati(Auto p_auto) { - boolean ritorno = false; - for (int i = 0; i < this.veicoli.length && !ritorno; i++) { - if (this.veicoli[i].GetTarga().equals(p_auto.GetTarga())) { - ritorno = true; + boolean ritorno = false, vuoto = true; + + for (int i = 0; i < this.veicoli.length && vuoto; i++) { + if (this.veicoli[i] != null) { + vuoto = false; + } + } + if (!vuoto) { + for (int i = 0; i < this.veicoli.length && !ritorno; i++) { + if (this.veicoli[i] != null && this.veicoli[i].GetTarga().equals(p_auto.GetTarga())) { + ritorno = true; + } } } @@ -51,11 +59,11 @@ public class Garage { int posizione = this.NextPosizioneLibera(); try { - veicoli[posizione] = new Auto(); - if (this.TrovaDuplicati(veicoli[posizione])) { + Auto auto = new Auto(); + if (this.TrovaDuplicati(auto)) { ritorno = "Errore: l'auto con la targa inserita è già parcheggiata nel garage."; - } - else { + } else { + veicoli[posizione] = auto; ritorno = "L'auto è posteggiata nella posizione %d.".formatted(posizione); } } catch (ArrayIndexOutOfBoundsException e) { @@ -90,7 +98,7 @@ public class Garage { * p_selettore = false -> posti liberi */ - String ritorno; + String ritorno; boolean vuoto = true; int posti[] = TrovaPosti(p_selettore); @@ -104,7 +112,7 @@ public class Garage { ritorno = "Non c'è nessun posto " + (p_selettore ? "occupato" : "libero") + "."; } else { int i = 0; - ritorno = "I posti " + (p_selettore ? "occupati" : "liberi") + " sono:\n"; + ritorno = "I posti " + (p_selettore ? "occupati" : "liberi") + " sono:\n"; for (int posizione : posti) { if (posizione != -1) { if (p_selettore) {