wieder das Berechnen des Preises

main
dustineversmann 2024-10-08 01:36:32 +02:00
parent 07a48dba0d
commit 8c32155f6d
2 changed files with 53 additions and 24 deletions

View File

@ -17,9 +17,9 @@ public class Main {
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
sdf.setLenient(false); sdf.setLenient(false);
Auto test = new Auto("123E"); Auto test = new Auto("123");
test.setEinfahrtZeit("10.10.2000, 05:00"); test.setEinfahrtZeit("10.10.2000, 04:00");
test.setAusfahrtZeit("11.10.2000, 13:00"); test.setAusfahrtZeit("10.10.2000, 10:30");
System.out.println(parkhaus.berechnePreis(test)); System.out.println(parkhaus.berechnePreis(test));
while (schleife) { while (schleife) {

View File

@ -109,36 +109,65 @@ public class Parkhaus {
} }
long kostenpflichtigeMinuten = parkdauerInMinuten - FREIE_MINUTEN; long kostenpflichtigeMinuten = parkdauerInMinuten - FREIE_MINUTEN;
double kostenPflichtigeStunden = Math.ceil(kostenpflichtigeMinuten / 60); double kostenPflichtigeStunden = Math.ceil(((double)kostenpflichtigeMinuten / 60));
long parkdauerInTagen = (long) Math.ceil(parkdauerInMinuten / (60.0 * 24)); long parkdauerInTagen = (long) Math.ceil(parkdauerInMinuten / (60.0 * 24));
if (parkdauerInTagen >= 1) { if (parkdauerInTagen >= 1) {
long kostenpflichtigeGanzeTage = (long) Math.floor(kostenPflichtigeStunden / 24); long kostenpflichtigeGanzeTage = (long) Math.floor(kostenPflichtigeStunden / 24);
preis = kostenpflichtigeGanzeTage * TAGES_MAX_PREIS; if (kostenpflichtigeGanzeTage >= 1) {
long übrigenStunden = (long) (kostenPflichtigeStunden - kostenpflichtigeGanzeTage * 24);
if (übrigenStunden <= 5) {
preis = preis + (übrigenStunden * ANGEFANGENE_STUNDE_PREIS);
} else if (einfahrtStunde >= 20) {
long stundenImAltenTag = (einfahrtStunde + übrigenStunden) - 24;
long stundenImNeuenTag = übrigenStunden - stundenImAltenTag;
if (stundenImNeuenTag <= 5) {
preis += 5;
} else {
preis += 5 + stundenImNeuenTag - 5;
}
} else if (einfahrtStunde <= 5) { preis = kostenpflichtigeGanzeTage * TAGES_MAX_PREIS;
long angebrocheneStundenAusserhalbDerNacht = (long) 6 - einfahrtStunde; long übrigenStunden = (long) (kostenPflichtigeStunden - kostenpflichtigeGanzeTage * 24);
long übrigeStundenAusserhalb = (long) Math.abs(einfahrtStunde - 6); if (übrigenStunden <= 5) {
if (angebrocheneStundenAusserhalbDerNacht == 6) { preis = preis + (übrigenStunden * ANGEFANGENE_STUNDE_PREIS);
preis += 5; } else if (einfahrtStunde >= 20) {
} else { long stundenImAltenTag = (einfahrtStunde + übrigenStunden) - 24;
preis += 5 + übrigeStundenAusserhalb; long stundenImNeuenTag = übrigenStunden - stundenImAltenTag;
if (stundenImNeuenTag <= 5) {
preis += 5;
} else {
preis += 5 + stundenImNeuenTag - 5;
}
} else if (einfahrtStunde <= 5) {
long angebrocheneStundenAusserhalbDerNacht = (long) 6 - einfahrtStunde;
long übrigeStundenAusserhalb = übrigenStunden - einfahrtStunde;
if (angebrocheneStundenAusserhalbDerNacht == 6) {
preis += 5;
} else {
preis += 5 + übrigeStundenAusserhalb;
}
}
}
else{
long übrigenStunden = (long) (kostenPflichtigeStunden - kostenpflichtigeGanzeTage * 24);
if (übrigenStunden <= 5) {
preis = preis + (übrigenStunden * ANGEFANGENE_STUNDE_PREIS);
} else if (einfahrtStunde >= 20) {
long stundenImAltenTag = (einfahrtStunde + übrigenStunden) - 24;
long stundenImNeuenTag = übrigenStunden - stundenImAltenTag;
if (stundenImNeuenTag <= 5) {
preis += 5;
} else {
preis += 5 + stundenImNeuenTag - 5;
preis = preis > 15 ? 15 : preis;
}
} else if (einfahrtStunde <= 5) {
long angebrocheneStundenAusserhalbDerNacht = (long) 6 - einfahrtStunde;
long übrigeStundenAusserhalb = übrigenStunden ;
if (angebrocheneStundenAusserhalbDerNacht == 6) {
preis += 5 + übrigeStundenAusserhalb - 6;
} else {
preis += übrigeStundenAusserhalb;
preis = preis > 15 ? 15 : preis;
}
} }
} }
} }
if (auto.iseAuto()) { if (auto.iseAuto()) {
preis = preis * E_AUTO_RABATT; preis = preis * E_AUTO_RABATT;
} }