import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Getraenkespender { private User user; private static ArrayList users1 = new ArrayList<>(); private static ArrayList drinksTypen = new ArrayList( Arrays.asList("wasser", "maracuja", "energydrink", "orange")); private static Scanner scanner = new Scanner(System.in); private Getraenk1 drink; public Getraenkespender() throws FileNotFoundException { loadFile("src/Mitgliedschaft.csv"); dataControl(); login(); if (checkAbo()) { System.out.println("Monatliches Abo vorhanden"); takeOrder(); if (drink != null) { System.out.println("Bitte entnehmen Sie Ihre Flasche:1 " + drink.toString()); } } else { System.out.println("Kein monatliches Abo vorhanden.\nPreis pro 0.5l beliebiges Getränk: 1 Euro"); takeOrder(); if (drink != null) { // Guthaben aktualisieren double preis = drink.getLiter() * 2; double guthaben = user.getGuthaben() - preis; user.setGuthaben(guthaben); System.out.println(user.toString()); System.out.println("Bitte entnehmen Sie Ihre Flasche: " + drink.toString()); } } } public void setUser1(User user) { this.user = user; } public User getUser() { return user; } public Getraenk1 getDrink() { return drink; } public void setDrink(Getraenk1 drink) { this.drink = drink; } private void login() { System.out.println("\n**Willkommen in fitbase**"); while (user == null) { System.out.println("Geben Sie Ihr ID ein(ID = Mitgliednummer)"); int eingabe1 = scanner.nextInt(); findUser(eingabe1); } } private void findUser(int id) { for (User benutzer : users1) { if (benutzer.getId() == id) { System.out.println("Zugriff gewährt für Mitglied: " + benutzer.getName() + ", Ihr Guthaben beträgt: " + benutzer.getGuthaben() + "€"); setUser1(benutzer); } } if (user == null) { System.out.println("User nicht gefunden"); } } private boolean checkAbo() { if (user.getAbo()) { return true; } else { return false; } } public static void dataControl() { for (User user1 : users1) { System.out.println(user1.toString()); } } public static void loadFile(String pfad) throws FileNotFoundException { Scanner scanner = new Scanner(new File(pfad)); while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] lines = line.split(";"); String name = lines[0]; boolean abo = lines[1].equalsIgnoreCase("ja"); int guthaben = Integer.parseInt(lines[2]); User user = new User(name, abo, guthaben); users1.add(user); } scanner.close(); } private void takeOrder() { String getraenk; String kohlenSauere; String liter; scanner.nextLine(); while (drink == null) { ArrayList order = new ArrayList<>(); System.out.println("Bitte wählen Sie ein Getränk:"); for (String drink : drinksTypen) { System.out.printf("-%s\n", drink); } getraenk = scanner.nextLine().toLowerCase(); if (drinksTypen.contains(getraenk)) { order.add(getraenk); } else { System.out.println("Ungültige Eingabe. Bitte wählen Sie ein vorhandenes Getränk."); continue; } System.out.println(getraenk + " soll mit oder ohne Kohlensäure? (Antwort: mit oder ohne)"); kohlenSauere = scanner.nextLine().toLowerCase(); if (kohlenSauere.equals("mit") || kohlenSauere.equals("ohne")) { order.add(kohlenSauere); } else { System.out.println("Ungültige Eingabe. Bitte geben Sie entweder (mit) oder (ohne) ein."); continue; } System.out.println("0.5, 1.0 oder 1.5 Liter? (Format: x.x)"); liter = scanner.nextLine(); try { double literValue = Double.parseDouble(liter); if (Arrays.asList("0.5", "1.0", "1.5").contains(liter)) { order.add(liter); } System.out.printf("Getränk: %s, Kohlensäure: %s, Liter: %s\n", getraenk, kohlenSauere, literValue); makeDrink(order); if (drink != null) { break; } } catch (NumberFormatException e) { System.out.println("Ungültige Eingabe. Bitte geben Sie eine gültige Liter-Menge ein."); } } } private void makeDrink(ArrayList order) { boolean kohlensaeure = order.get(1).equalsIgnoreCase("mit"); try { double liter = Double.parseDouble(order.get(2)); if (Arrays.asList(0.5, 1.0, 1.5).contains(liter)) { double preis = liter * 2; setDrink(new Getraenk1(order.get(0), kohlensaeure, liter, preis)); } else { System.out.println("Ungültige Eingabe für die Liter-Menge. Bitte wählen Sie 0.5, 1.0 oder 1.5."); } } catch (NumberFormatException e) { System.out.println("Ungültige Eingabe für die Liter-Menge. Bitte geben Sie eine Zahl ein."); } } }