From 844f6d9edce4421fc60b3d89f0819df8abb3f5bc Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Thu, 25 Sep 2025 22:26:09 +0200 Subject: [PATCH] Aggiunto GetPostiOccupati --- src/eserciziogarage/Garage.java | 45 ++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/src/eserciziogarage/Garage.java b/src/eserciziogarage/Garage.java index 5029cd3..0b037fa 100644 --- a/src/eserciziogarage/Garage.java +++ b/src/eserciziogarage/Garage.java @@ -45,10 +45,11 @@ public class Garage { public String IngressoAuto() { String ritorno; + int posizione = this.NextPosizioneLibera(); try { - veicoli[this.NextPosizioneLibera()] = new Auto(); - ritorno = "L'auto è posteggiata nella posizione %d".formatted(posizioneLibera++); + veicoli[posizione] = new Auto(); + ritorno = "L'auto è posteggiata nella posizione %d".formatted(posizione); } catch (ArrayIndexOutOfBoundsException e) { ritorno = "Errore: il garage è pieno."; } catch (Exception e) { @@ -58,8 +59,46 @@ public class Garage { return ritorno; } + private int[] TrovaPosti(boolean p_selettore) { + /* + * p_selettore = true -> trova posti occupati + * p_selettore = false -> trova posti liberi + */ + int ritorno[] = new int[this.veicoli.length]; + for (int i = 0; i < this.veicoli.length; i++) { + if (p_selettore) { + ritorno[i] = this.veicoli[i] != null ? i : -1; + } else { + ritorno[i] = this.veicoli[i] == null ? i : -1; + } + } + + return ritorno; + } + public String GetPostiOccupati() { - return "I posti occupati sono da 0 a %d".formatted(--posizioneLibera); + String ritorno; + boolean vuoto = true; + int posti[] = TrovaPosti(true); + + for (int i = 0; i < posti.length && vuoto; i++) { + if (posti[i] != -1) { + vuoto = false; + } + } + + if (vuoto) { + ritorno = "Non c'è nessun posto occupato."; + } + else { + ritorno = "I posti occupati sono:\n"; + for (int posizione : posti) { + if (posizione != -1) { + ritorno += posizione + "\n"; + } + } + } + return ritorno; } public String GetPostiLiberi() {