diff --git a/Parkhaus/src/ParkgebuehrenBerechnen b/Parkhaus/src/ParkgebuehrenBerechnen new file mode 100644 index 0000000..60e72a7 --- /dev/null +++ b/Parkhaus/src/ParkgebuehrenBerechnen @@ -0,0 +1,103 @@ +public static void parkgebuehrenBerechnen(Date d1, Date d2, String kennzeichenEingabe) { + + if (d1.getTime() > d2.getTime()) { + System.out.println("Die Ausfahrtszeit kann nicht vor der Einfahrtszeit liegen!"); + return; + } + + // Sekunden zwischen Einfahrtszeit und Ausfahrtszeit berechnen + long secDiff = (d2.getTime() - d1.getTime()) / 1000; + + // Sekunden in Minuten umrechnen + long minuten = secDiff / 60; + + // ersten 15 Minuten kostenfrei + if (minuten <= 15) { + System.out.println("Die Parkgebühr ist kostenlos :)"); + System.out.println(); + return; + } + + // Ersten 15 Minuten kostenlos + minuten -= 15; + + // Minuten in Stunden umrechnen + // +59 damit angefangene Stunden auch zählen, d.h 61 Minuten = 2 Stunden + long gesamtStunden = (minuten + 59) / 60; + + // calEin = Einfahrtszeit + Calendar calEinfahrtsZeit = Calendar.getInstance(); + calEinfahrtsZeit.setTime(d1); + + // calAus = Ausfahrtszeit + Calendar calAusfahrtsZeit = Calendar.getInstance(); + calAusfahrtsZeit.setTime(d2); + + // Gebühren deklarieren + double gebuehrenTag = 0; + double gebuehrenNacht = 0; + + // Berechnung der Gebühren solange Einfahrszeit vor der Ausfahrtszeit liegt + while (calEinfahrtsZeit.before(calAusfahrtsZeit) || calEinfahrtsZeit.equals(calAusfahrtsZeit)) { + + // aktuelleStunde ist gleich die Stunde der Einfahrtszeit + int aktuelleStunde = calEinfahrtsZeit.get(Calendar.HOUR_OF_DAY); + + // Gebühren für die aktuelle Stunde berechnen (20:00-06:00) + if (aktuelleStunde >= 20 || aktuelleStunde < 6) { + + // Nachtgebühren + gebuehrenNacht += 1; + } else { + + // Taggebühren + gebuehrenTag += 1; + } + + // Wenn die aktuelle Stunde 6:00 ist, dann Tag abschließen + if (aktuelleStunde == 6) { + + // Maximal 5 Euro für Nachtgebühren + if (gebuehrenNacht > 5) { + gebuehrenNacht = 5; + } + + // Maximal 15 Euro für Taggebühren + if (gebuehrenTag > 15) { + gebuehrenTag = 15; + } + + // Gesamtgebühren für diesen Tag hinzufügen + Gebuehren += gebuehrenTag + gebuehrenNacht; + + // Gebühren zurücksetzen für den nächsten Tag + gebuehrenTag = 0; + gebuehrenNacht = 0; + } + + // Zur nächsten Stunde der Einfahrt (solange bis Einfahrtszeit größer + // Ausfahrtszeit ist) + calEinfahrtsZeit.add(Calendar.HOUR_OF_DAY, 1); + } + + // Nach der Schleife die Gebühren für den letzten Tag berechnen + if (gebuehrenNacht > 5) { + gebuehrenNacht = 5; // Maximal 5 Euro für Nachtgebühren + } + + if (gebuehrenTag > 15) { + gebuehrenTag = 15; // Maximal 15 Euro für Taggebühren + } + + // Letzte Gebühren hinzufügen + Gebuehren += gebuehrenTag + gebuehrenNacht; + + // Wenn E-Auto, dann 20% Rabatt + if (kennzeichenEingabe.endsWith("E")) { + Gebuehren *= 0.8; + } + + // Ausgabe der Parkgebühr + System.out.printf("Die Parkgebühr beträgt: %.2f Euro.", Gebuehren); + System.out.println(); + } \ No newline at end of file