From 8c32155f6d18b16ddae2958156064735108b26fa Mon Sep 17 00:00:00 2001 From: dustineversmann Date: Tue, 8 Oct 2024 01:36:32 +0200 Subject: [PATCH] wieder das Berechnen des Preises --- src/main/java/de/deversmann/Main.java | 6 +- src/main/java/de/deversmann/Parkhaus.java | 71 ++++++++++++++++------- 2 files changed, 53 insertions(+), 24 deletions(-) diff --git a/src/main/java/de/deversmann/Main.java b/src/main/java/de/deversmann/Main.java index 8daaf46..38815f7 100644 --- a/src/main/java/de/deversmann/Main.java +++ b/src/main/java/de/deversmann/Main.java @@ -17,9 +17,9 @@ public class Main { var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); sdf.setLenient(false); - Auto test = new Auto("123E"); - test.setEinfahrtZeit("10.10.2000, 05:00"); - test.setAusfahrtZeit("11.10.2000, 13:00"); + Auto test = new Auto("123"); + test.setEinfahrtZeit("10.10.2000, 04:00"); + test.setAusfahrtZeit("10.10.2000, 10:30"); System.out.println(parkhaus.berechnePreis(test)); while (schleife) { diff --git a/src/main/java/de/deversmann/Parkhaus.java b/src/main/java/de/deversmann/Parkhaus.java index 2e298d8..affe8bf 100644 --- a/src/main/java/de/deversmann/Parkhaus.java +++ b/src/main/java/de/deversmann/Parkhaus.java @@ -109,36 +109,65 @@ public class Parkhaus { } 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)); + if (parkdauerInTagen >= 1) { long kostenpflichtigeGanzeTage = (long) Math.floor(kostenPflichtigeStunden / 24); - preis = kostenpflichtigeGanzeTage * TAGES_MAX_PREIS; - 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; - } + if (kostenpflichtigeGanzeTage >= 1) { - } else if (einfahrtStunde <= 5) { - long angebrocheneStundenAusserhalbDerNacht = (long) 6 - einfahrtStunde; - long übrigeStundenAusserhalb = (long) Math.abs(einfahrtStunde - 6); - if (angebrocheneStundenAusserhalbDerNacht == 6) { - preis += 5; - } else { - preis += 5 + übrigeStundenAusserhalb; + preis = kostenpflichtigeGanzeTage * TAGES_MAX_PREIS; + 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) { + 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()) { preis = preis * E_AUTO_RABATT; }