From c9b1e9f04988672d95f921d3f3722bcad0705678 Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Tue, 21 Oct 2025 23:22:26 +0200 Subject: [PATCH] Controlli migliori + piccole migliorie --- src/listaspesa/listaSpesa.java | 64 ++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 18 deletions(-) diff --git a/src/listaspesa/listaSpesa.java b/src/listaspesa/listaSpesa.java index 97582b6..cc3be70 100644 --- a/src/listaspesa/listaSpesa.java +++ b/src/listaspesa/listaSpesa.java @@ -30,6 +30,7 @@ public class listaSpesa { public static void main(String[] args) { int scelta = -1; + boolean error; do { System.out.println("Scegliere un'opzione:"); @@ -48,9 +49,23 @@ public class listaSpesa { case 0: break; case 1: - System.out.print("Quanti prodotti inserire? "); - dimensioneMagazzino = sc.nextInt(); - sc.nextLine(); + do { + try { + error = false; + System.out.print("Quanti prodotti inserire? "); + dimensioneMagazzino = sc.nextInt(); + sc.nextLine(); + if (dimensioneMagazzino <= 0) { + System.out.println("Errore: è necessario inserire almeno un prodotto."); + pausa(); + error = true; + } + } catch (InputMismatchException e) { + System.out.println("Errore: numero non valido."); + pausa(); + error = true; + } + } while (error); if (magazzino.equals(null)) { magazzino = new Prodotto[dimensioneMagazzino]; @@ -68,9 +83,23 @@ public class listaSpesa { pausa(); break; case 2: - System.out.print("Quanti prodotti inserire? "); - dimensioneScontrino = sc.nextInt(); - sc.nextLine(); + do { + try { + error = false; + System.out.print("Quanti prodotti inserire? "); + dimensioneScontrino = sc.nextInt(); + sc.nextLine(); + if (dimensioneScontrino <= 0) { + System.out.println("Errore: è necessario inserire almeno un prodotto."); + pausa(); + error = true; + } + } catch (InputMismatchException e) { + System.out.println("Errore: numero non valido."); + pausa(); + error = true; + } + } while (error); if (scontrino.equals(null)) { scontrino = new Prodotto[dimensioneScontrino]; @@ -142,7 +171,6 @@ public class listaSpesa { do { try { - error = false; System.out.print("Inserire il prezzo: "); prezzo = sc.nextFloat(); @@ -183,19 +211,18 @@ public class listaSpesa { if (scelta.equals("y") || scelta.equals("s")) { isAlimentare = true; - - boolean dateError; + do { - dateError = false; + error = false; try { System.out.print("Inserire la data di scadenza nel formato " + datePattern + ": "); dataScadenza = sdf.parse(sc.nextLine()); } catch (ParseException e) { System.out.println("Errore nella lettura della data."); pausa(); - dateError = true; + error = true; } - } while (dateError); + } while (error); } else if (scelta.equals("n")) { isAlimentare = false; @@ -320,14 +347,14 @@ public class listaSpesa { } while (error); - if (prodottoTrovato.checkQtaDisponibile(nomeODescrizione, qta) != 0) { - if (qta <= prodottoTrovato.checkQtaDisponibile(nomeODescrizione, qta)) { + if (prodottoTrovato.checkQtaDisponibile(useNomeProdotto ? nomeODescrizione : prodottoTrovato.getNome(), qta) != 0) { + if (qta <= prodottoTrovato.checkQtaDisponibile(useNomeProdotto ? nomeODescrizione : prodottoTrovato.getNome(), qta)) { if (prodottoTrovato.getQta() - qta == 0) { System.out.println("Attenzione: il prodotto è stato finito."); scontrino[trovaPosizioneLibera(scontrino)] = prodottoTrovato; magazzino[trovaProdottoInMagazzino(prodottoTrovato)] = null; } else { - prodottoTrovato.updQtaMagazzino(nomeODescrizione, + prodottoTrovato.updQtaMagazzino(useNomeProdotto ? nomeODescrizione : prodottoTrovato.getNome(), prodottoTrovato.getQta() - qta); } exit = true; @@ -381,6 +408,7 @@ public class listaSpesa { for (Prodotto prodotto : scontrino) { prodotto.stampaDati(); + System.out.println(); } System.out.println("Totale scontrino: " + totaleScontrino(fidelityCard)); } @@ -390,11 +418,11 @@ public class listaSpesa { for (int i = 0; i < magazzino.length && !ritorno; i++) { if (isAlimentare) { if (magazzino[i].getClass().getSimpleName().equals("Alimentare")) { - ritorno = magazzino[i].getNome().equals(nome); + ritorno = magazzino[i].getNome().contains(nome); } } else { if (magazzino[i].getClass().getSimpleName().equals("NonAlimentare")) { - ritorno = magazzino[i].getNome().equals(nome); + ritorno = magazzino[i].getNome().contains(nome); } } } @@ -405,7 +433,7 @@ public class listaSpesa { Prodotto ritorno = null; boolean exit = false; for (int i = 0; i < magazzino.length && !exit; i++) { - if (magazzino[i].getNome().equals(p_nomeODescrizione)) { + if (magazzino[i].getNome().contains(p_nomeODescrizione)) { ritorno = magazzino[i]; exit = true; }