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