ich: die methode berechneGebuehren soll so angepasst werden, somit die folgende Funktion dabei ist: Zwischen 20 und 6 Uhr kostet das Parken maximal 5 Euro. (Wenn ein Fahrzeug um 19:30 Uhr einfährt, tickt die Uhr 20:30, 21:30, 22:30, 23:30 und 0:30 Uhr nochmal hoch und dann wieder um 6:30 Uhr.). Das heißt aber nicht, dass ab 20 uhr man direkt 5 euro bezahlenm muss, sondern nur wenn die Gebühren höher als 5 euro sind, in dieser Zeit muss man dann maximal 5 euro bezahlen. hier meine methode dafür: public double berechneGebuehren(String kennzeichen, Date ausfahrt) { long parkdauer = berechneParkdauer(kennzeichen, ausfahrt); double gebuehr = 0; // Falls die Parkdauer 15 Minuten oder weniger beträgt, ist das Parken kostenlos if (parkdauer <= 15) { parkdauer = 0; gebuehr = 0; } // Parkdauer nach den 15 Minuten long parkdauerOhneFreiminuten = parkdauer - 15; // Tageslimit: Maximal 15 Euro pro Tag if (parkdauerOhneFreiminuten == 1440) { gebuehr = 1500; parkdauerOhneFreiminuten = 0; } // 1 Euro pro angefangene Stunde if (parkdauerOhneFreiminuten > 0 && parkdauerOhneFreiminuten < 1440) { while (parkdauerOhneFreiminuten > 0) { gebuehr += 100; parkdauerOhneFreiminuten -= 60; } } // Prüfe, ob es sich um ein E-Auto handelt (Kennzeichen endet mit "E") if (kennzeichen.endsWith("E")) { gebuehr *= 0.8; // 20% Rabatt für E-Autos } return gebuehr; } KI: Um die Gebührenberechnung korrekt an die Regel "Zwischen 20 und 6 Uhr kostet das Parken maximal 5 Euro" anzupassen, müssen wir zusätzlich die Parkzeiten in diesem Zeitfenster explizit überprüfen. Das bedeutet, dass in der Zeit von 20:00 Uhr bis 6:00 Uhr die Gebühren, wenn sie höher als 5 Euro wären, auf 5 Euro begrenzt werden. Hier ist die angepasste Version deiner Methode, die diese Funktion berücksichtigt: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public double berechneGebuehren(String kennzeichen, Date ausfahrt) { long parkdauer = berechneParkdauer(kennzeichen, ausfahrt); double gebuehr = 0; // Falls die Parkdauer 15 Minuten oder weniger beträgt, ist das Parken kostenlos if (parkdauer <= 15) { return 0; // Kostenlos } // Parkdauer nach den 15 Minuten long parkdauerOhneFreiminuten = parkdauer - 15; // Tageslimit: Maximal 15 Euro pro Tag if (parkdauerOhneFreiminuten >= 1440) { // 1440 Minuten = 24 Stunden gebuehr = 1500; return gebuehr; // Direkt zurück, da Tageslimit erreicht } // 1 Euro pro angefangene Stunde if (parkdauerOhneFreiminuten > 0) { while (parkdauerOhneFreiminuten > 0) { gebuehr += 100; // 1 Euro pro Stunde parkdauerOhneFreiminuten -= 60; } } // Maximale Gebühren in der Nacht von 20 Uhr bis 6 Uhr gebuehr = berechneNachttarif(kennzeichen, gebuehr, ausfahrt); // Prüfe, ob es sich um ein E-Auto handelt (Kennzeichen endet mit "E") if (kennzeichen.endsWith("E")) { gebuehr *= 0.8; // 20% Rabatt für E-Autos } return gebuehr; } private double berechneNachttarif(String kennzeichen, double gebuehr, Date ausfahrt) { Calendar cal = Calendar.getInstance(); cal.setTime(ausfahrt); // Bestimme die Einfahrtszeit des Fahrzeugs Date einfahrt = findeEinfahrtZeit(kennzeichen); // Methode zum Finden der Einfahrtszeit Calendar einfahrtsCal = Calendar.getInstance(); einfahrtsCal.setTime(einfahrt); // Prüfe, ob sich ein Teil der Parkdauer im Zeitraum von 20:00 bis 6:00 Uhr befindet while (einfahrtsCal.before(cal)) { int stunde = einfahrtsCal.get(Calendar.HOUR_OF_DAY); if (stunde >= 20 || stunde < 6) { // Die Gebühren für jede angefangene Stunde in diesem Zeitraum dürfen maximal 5 Euro sein if (gebuehr > 500) { gebuehr = 500; // Maximal 5 Euro während der Nachtzeit } } // Erhöhe die Zeit um eine Stunde, um jede Stunde zu prüfen einfahrtsCal.add(Calendar.HOUR_OF_DAY, 1); } return gebuehr; } private Date findeEinfahrtZeit(String kennzeichen) { for (PKW pkw : parkendePkws) { if (pkw.getKennzeichen().equals(kennzeichen)) { return pkw.getEinfahrt(); } } return new Date(); // Falls kein PKW gefunden wurde, aktuelles Datum als Fallback }