diff --git a/src/fatturascontrini/FatturaScontrini.java b/src/fatturascontrini/FatturaScontrini.java index 556db93..1bfd08c 100644 --- a/src/fatturascontrini/FatturaScontrini.java +++ b/src/fatturascontrini/FatturaScontrini.java @@ -9,7 +9,6 @@ import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; -import java.nio.Buffer; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -30,14 +29,12 @@ public class FatturaScontrini { static Scanner sc = new Scanner(System.in); static final String PATH_MENU = "./src/fatturascontrini/menu.txt"; static final String ERRORE_DEFAULT = "Errore: opzione non valida."; + static final String ERRORE_FILE = "Errore nella lettura del file: "; static int codiceScontrino = 0; public static void main(String[] args) { int scelta = -1; ArrayList ordinazione = null; - boolean ordinazioneEffettuata = false; - String sceltaSiNo; - boolean error; do { System.out.println("Scegliere un'opzione:"); @@ -55,36 +52,11 @@ public class FatturaScontrini { case 0: break; case 1: - if (ordinazioneEffettuata) { - do { - error = false; - System.out.print( - "Attenzione: verrà sovrascritta la precedente ordinazione. Continuare? [S/N] "); - sceltaSiNo = sc.nextLine().trim().toLowerCase(); - switch (sceltaSiNo) { - case "s": - ordinazione = ordinazione(); - System.out.println("Ordinazione effettuata con successo."); - break; - case "n": - System.out.println("L'ordinazione non è stata modificata."); - break; - default: - System.out.println(ERRORE_DEFAULT); - pausa(); - error = true; - break; - } - } while (error); - } else { - ordinazione = ordinazione(); - ordinazioneEffettuata = true; - System.out.println("Ordinazione effettuata con successo."); - } + ordinazione = placeOrdinazione(ordinazione); pausa(); break; case 2: - if (ordinazioneEffettuata) { + if (ordinazione != null) { pagare(ordinazione); } else { System.out.println( @@ -113,55 +85,97 @@ public class FatturaScontrini { sc.nextLine(); } + static ArrayList placeOrdinazione(ArrayList ordinazione) { + boolean error; + String scelta; + + if (ordinazione != null) { + do { + error = false; + System.out.print( + "Attenzione: verrà sovrascritta la precedente ordinazione. Continuare? [S/N] "); + scelta = sc.nextLine().trim().toLowerCase(); + switch (scelta) { + case "s": + ordinazione = ordinazione(); + System.out.println("Ordinazione effettuata con successo."); + break; + case "n": + System.out.println("L'ordinazione non è stata modificata."); + break; + default: + System.out.println(ERRORE_DEFAULT); + pausa(); + error = true; + break; + } + } while (error); + } else { + ordinazione = ordinazione(); + System.out.println("Ordinazione effettuata con successo."); + } + + return ordinazione; + } + static ArrayList ordinazione() { ArrayList ritorno = new ArrayList<>(); - boolean exit = true; + boolean exit; boolean error; boolean isDuplicate = false; String scelta; do { - if (exit) { - exit = false; - int[] ordine = { selezioneMenu(), quantita() }; - for (int[] ordini : ritorno) { - if (ordini[0] == ordine[0]) { - isDuplicate = true; - do { - error = false; - System.out - .print( - "L'opzione scelta è già presente nell'ordinazione. Aggiornare la quantità? [S/N] "); - scelta = sc.nextLine().trim().toLowerCase(); - switch (scelta) { - case "s": - ritorno.get(ritorno.indexOf(ordini))[1] = ordine[1]; - break; - case "n": - System.out.println("L'ordinazione non è stata modificata."); - break; - default: - System.out.println(ERRORE_DEFAULT); - pausa(); - error = true; - break; - } - } while (error); - } + exit = true; + int[] ordine = { selezioneMenu(), quantita() }; - } - if (!isDuplicate) { - ritorno.add(ordine); - } + isDuplicate = isOrdinazioneDuplicata(ritorno, ordine); + if (!isDuplicate) { + ritorno.add(ordine); + } + + do { + error = false; + System.out.print("Inserire un altra ordinazione? [S/N] "); + scelta = sc.nextLine().trim().toLowerCase(); + switch (scelta) { + case "s": + exit = false; + break; + case "n": + break; + default: + System.out.println(ERRORE_DEFAULT); + pausa(); + error = true; + break; + } + } while (error); + } while (!exit); + + return ritorno; + } + + static boolean isOrdinazioneDuplicata(ArrayList ordinazione, int[] ordine) { + boolean ritorno = false; + boolean error; + String scelta; + + for (int[] ordini : ordinazione) { + if (ordini[0] == ordine[0]) { + ritorno = true; do { error = false; - System.out.print("Inserire un altra ordinazione? [S/N] "); + System.out + .print( + "L'opzione scelta è già presente nell'ordinazione. Aggiornare la quantità? [S/N] "); scelta = sc.nextLine().trim().toLowerCase(); switch (scelta) { case "s": - exit = true; + ordinazione.get(ordinazione.indexOf(ordini))[1] = ordine[1]; break; case "n": + System.out.println("L'ordinazione non è stata modificata."); break; default: System.out.println(ERRORE_DEFAULT); @@ -170,10 +184,9 @@ public class FatturaScontrini { break; } } while (error); - // controllo se c'è già e aggiorno la quantità } - } while (exit); + } return ritorno; } @@ -189,7 +202,7 @@ public class FatturaScontrini { riga = br.readLine(); } } catch (IOException e) { - System.out.println("Errore nella lettura del file: " + e.getMessage()); + System.out.println(ERRORE_FILE + e.getMessage()); } } @@ -203,7 +216,7 @@ public class FatturaScontrini { riga = br.readLine(); } } catch (IOException e) { - System.out.println("Errore nella lettura del file: " + e.getMessage()); + System.out.println(ERRORE_FILE + e.getMessage()); } return i; } @@ -325,7 +338,7 @@ public class FatturaScontrini { riga = br.readLine(); } // crea tabella nome e prezzo } catch (IOException e) { - System.out.println("Errore nella lettura del file: " + e.getMessage()); + System.out.println(ERRORE_FILE + e.getMessage()); } return ritorno; }