PR2-Testate/QualifierTeil2/Parkhaus.java

129 lines
3.2 KiB
Java

package QualifierTeil2;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Parkhaus {
private List<PKW> parkendePkws;
int kapazität;
int belegt;
double parkgebühren;
public Parkhaus() {
this.parkendePkws = new ArrayList<>();
this.kapazität = randomAnzahlParkplätze();
this.belegt = 0;
this.parkgebühren = 0;
}
public List<PKW> getParkendePkws() {
return parkendePkws;
}
public static int randomAnzahlParkplätze(){
return (int) (Math.random() * 200) + 1;
}
public void einfahren(PKW pkw) {
if (parkendePkws.size() < kapazität) {
parkendePkws.add(pkw);
this.kapazität--;
this.belegt++;
} else {
System.out.println("Parkhaus voll.");
}
}
public long berechneParkdauer(String kennzeichen, Date ausfahrt) {
/*long minDiff = 0;
for (PKW pkw : parkendePkws) {
if (pkw.getKennzeichen().equals(kennzeichen) && !pkw.hatBezahlt()) {
minDiff = (ausfahrt.getTime() - pkw.einfahrt.getTime()) / 60000;
}
}
return minDiff;*/
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
Date d1 = null;
try {
d1 = sdf.parse("01.10.2024, 9:45");
} catch (ParseException e) {
throw new RuntimeException(e);
}
Date d2 = null;
try {
d2 = sdf.parse("02.10.2024, 9:45");
} catch (ParseException e) {
throw new RuntimeException(e);
}
long minDiff = (d2.getTime() - d1.getTime()) / 60000;
return minDiff;
}
public long berechneGebühren(String kennzeichen, Date ausfahrt){
long parkdauer = berechneParkdauer(kennzeichen, ausfahrt);;
long gebuehr = 0;
// Falls die Parkdauer 15 Minuten oder weniger beträgt, ist das Parken kostenlos
if (parkdauer <= 15) {
gebuehr = 0;
parkdauer = 0;
}
if (parkdauer == 1440){
gebuehr = 1500;
parkdauer = 0;
}
if (parkdauer > 0 && parkdauer < 1440 ){
while(parkdauer > 0){
gebuehr += 100;
parkdauer-=60;
}
}
// Prüfe, ob es sich um ein E-Auto handelt (Kennzeichen endet mit "E")
if (kennzeichen.endsWith("E")) {
gebuehr *= 0.8; // 20% Rabatt für E-Autos
}
return gebuehr;
}
}
/*public int berechneParkgebuehr(){
long pd = this.berechneParkdauer();
int gebuehr = 0;
if (pd == 1440){
gebuehr = 1500;
pd = 0;
}
//Wenn zu zahlenden Parkdauer vorhanden ist, sind die ersten 15 min kostenlos
if (pd > 0){
pd = pd - 15;
}
//Wenn noch zu zahlenden Parkdauer vorhanden ist, wird der Rest mit 1€ pro 1h angerechnet.
if (pd > 0){
while (pd > 0) {
gebuehr += 100;
pd -= 60;
}
}
return gebuehr;
}*/