import java.util.Scanner; import java.util.regex.Pattern; import java.util.regex.Matcher; import java.time.LocalDateTime; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Parkhaus parkhaus = new Parkhaus(); String kennzeichenRegex = "^[A-ZÄÖÜ]{1,3}-[A-Z]{1,2} \\d{1,4}E?$"; // Regex für deutsches Kennzeichen mit optionalem 'E' Pattern kennzeichenPattern = Pattern.compile(kennzeichenRegex); System.out.println("Willkommen im Parkhaus!"); while (true) { System.out.println("\nWählen Sie eine Option:"); System.out.println("1: Einfahrt"); System.out.println("2: Ausfahrt"); System.out.println("3: Liste der geparkten Fahrzeuge"); System.out.println("4: Programm beenden"); String auswahl = scanner.nextLine(); switch (auswahl) { case "1": System.out.println("Geben Sie das Kennzeichen des Autos ein (z.B. MA-SH 4077):"); String kennzeichen = scanner.nextLine(); Matcher kennzeichenMatcher = kennzeichenPattern.matcher(kennzeichen); if (!kennzeichenMatcher.matches()) { System.out.println("Ungültiges Kennzeichenformat. Bitte versuchen Sie es erneut."); break; } boolean erfolgreich = parkhaus.einfahrt(kennzeichen); if (erfolgreich) { System.out.println("Fahrzeug erfolgreich eingetragen."); } else { System.out.println("Das Parkhaus ist voll. Einfahrt nicht möglich."); } break; case "2": System.out.println("Geben Sie Ihr Kennzeichen ein:"); String kennzeichenAus = scanner.nextLine(); float parkgebuehren = parkhaus.ausfahrt(kennzeichenAus); if (parkgebuehren == -1) { System.out.println("Fahrzeug nicht im Parkhaus gefunden."); } else { System.out.println("Die Parkgebühren betragen: " + parkgebuehren + " Euro"); System.out.println("Bitte geben Sie Ihre 16-stellige Kreditkartennummer zur Bezahlung ein:"); String kreditkartennummer = scanner.nextLine(); if (Zahlungsabwicklung.validiereKreditkarte(kreditkartennummer)) { System.out.println("Bezahlung erfolgreich. Vielen Dank!"); } else { System.out.println("Ungültige Kreditkartennummer. Fahrzeug wird als schuldig markiert."); parkhaus.addFahrzeugMitSchulden(new Pkw(kennzeichenAus, LocalDateTime.now())); // Fahrzeug mit Schulden markieren } } break; case "3": System.out.println("Aktuell geparkte Fahrzeuge:"); for (Pkw auto : parkhaus.getFahrzeugListe()) { System.out.println("Kennzeichen: " + auto.getKennzeichen() + ", Eingefahren am: " + auto.getEinfahrzeit()); } break; case "4": System.out.println("Programm wird beendet. Auf Wiedersehen!"); scanner.close(); return; default: System.out.println("Ungültige Auswahl. Bitte versuchen Sie es erneut."); } } } }