package ph; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class AUTO { private String kennzeichen; private int parkplaetze; private double schulden; private Date einfahrt; private Date ausfahrt; public AUTO(String kennzeichen,int parkplaetze,double schulden,Date einfahrt,Date ausfahrt) { this.kennzeichen=kennzeichen; this.parkplaetze=parkplaetze; this.schulden=schulden; this.einfahrt=einfahrt; this.ausfahrt=ausfahrt; } public AUTO(Date einfahrt,Date ausfahrt) {//für simulator this.einfahrt=einfahrt; this.ausfahrt=ausfahrt; } public Date getEinfahrt() { return einfahrt; } public Date getAusfahrt() { return ausfahrt; } public String getKennzeichen() { return kennzeichen; } public double getSchulden() { return schulden; } public int getParkplaetze() { return parkplaetze; } public void einfahren() { if(parkplaetze<=0) { System.err.println("Parkhaus ist voll"); }else { parkplaetze--; } } public void ausfahren() { boolean Eauto=istEauto(); double schulden=parkgebuehren(Eauto); long sek=Parkzeit(); double min=sek/60; if(schulden>0 && min>15) { System.err.println("Sie haben noch nicht gezahlt."); }else { parkplaetze--; System.out.println("Auf Wiedersehen"); }} public void cardlength(String visa) { if(visa.length()!=16) { System.err.println("Die Eingabe stimmt nicht"); } } public void validCard(String visa) { int pz = 0; int gewichtung = 1; int quersumme = 0; for (int i = 15; i >= 0; i--) { int zahl = Character.getNumericValue(visa.charAt(i)); quersumme += zahl * gewichtung; gewichtung = (gewichtung % 2 == 0) ? gewichtung - 1 : gewichtung + 1; } pz = 10 - (quersumme % 10); if (pz != Character.getNumericValue(visa.charAt(15))) { System.err.println("Dies ist keine echte VISA Karte."); } } public void pay() throws InterruptedException { System.out.println("Legen Sie die Karte ein."); System.out.println("."); Thread.sleep(1000); System.out.println(".."); Thread.sleep(1000); System.out.println("..."); Thread.sleep(1000); System.out.println("...."); Thread.sleep(1000); System.out.println("....."); Thread.sleep(1000); System.out.println("Kauf abgeschlossen Sie können die Karte nun entfernen."); schulden=0; parkplaetze--; } public Date Zeitformat(String datum) throws ParseException { if (datum.isEmpty()) { Date aktuellesDatum = new Date(); System.out.println("Aktuelles Datum: " + aktuellesDatum); return aktuellesDatum; } String pattern = "dd.MM.yyyy,HH:mm"; SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { Date formatiertesDatum = sdf.parse(datum); return formatiertesDatum; } catch (ParseException e) { System.err.println("Ungültiges Datumsformat. Bitte verwenden Sie das Format"); return new Date(); } } public long Parkzeit() { return (ausfahrt.getTime() - einfahrt.getTime()) / 1000; } public double parkgebuehren(boolean Eauto) { long sekunden = Parkzeit(); long minuten = sekunden / 60; double stunden = minuten / 60.0; if (minuten <= 15) { return 0; } int aufgerundeteStunden = (int) stunden; if (stunden > aufgerundeteStunden) { aufgerundeteStunden++; } double gesamtgebuehr = 0.0; for (int i = 0; i < aufgerundeteStunden; i++) { int stunde = (i % 24); if (stunde >= 20 || stunde < 6) { gesamtgebuehr += 5; } else { gesamtgebuehr += 1; } if (gesamtgebuehr >= 15) { gesamtgebuehr = 15; break; } } if (Eauto) { gesamtgebuehr *= 0.8; } return schuldenaufrechnen(gesamtgebuehr); } public boolean istEauto() { if(kennzeichen.charAt(kennzeichen.length()-1)=='E') { return true; } return false; } public double schuldenaufrechnen(double gebuehr) { if(schulden>0) { System.err.println("Sie haben noch ungezahlte Schulden"); } schulden+=gebuehr; return schulden; } }