Parkgebühren ausgebessert
parent
d762051356
commit
28308b1a0c
|
@ -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();
|
||||||
|
}
|
Loading…
Reference in New Issue