Parkgebühren ausgebessert

main
Arthur Kovis 2024-10-08 11:24:26 +02:00
parent d762051356
commit 28308b1a0c
1 changed files with 103 additions and 0 deletions

View File

@ -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();
}