07- manege ticket names and prices with array

This commit is contained in:
Joel
2021-01-01 17:37:51 +01:00
parent 4d2b099bd1
commit 6f7373d09b
+125 -133
View File
@@ -2,163 +2,155 @@
class Fahrkartenautomat class Fahrkartenautomat
{ {
public static double fahrkartenbestellungErfassen (){ public static double fahrkartenbestellungErfassen (){
//Preise // Array für Preise
double preisEinzelfahrschein = 2.9;
double preisTageskarte = 8.6;
double preisKleingruppe = 23.5;
//=====================================
Scanner tastatur = new Scanner(System.in); String[] bezeichnungen = {"Einzelfahrschein Berlin AB",
"Einzelfahrschein Berlin BC",
"Einzelfahrschein Berlin ABC",
"Kurzstrecke",
"Tageskarte Berlin AB",
"Tageskarte Berlin BC",
"Tageskarte Berlin ABC",
"Kleingruppen-Tageskarte Berlin AB",
"Kleingruppen-Tageskarte Berlin BC",
"Kleingruppen-Tageskarte Berlin ABC"};
double[] preise = {2.9, 3.3, 3.6, 1.9, 8.6, 9.0, 9.6, 23.5, 24.3, 24.9};
double zuZahlenderBetrag = 0.0; Scanner tastatur = new Scanner(System.in);
double einzelBetrag = 0.0;
byte anzahlTickets = 0;
byte auswahlTicket = 0;
boolean auswahl = true; double zuZahlenderBetrag = 0.0;
while (auswahl) { double einzelBetrag = 0.0;
System.out.printf("\nWählen Sie ihre Wunschfahrkarte für Berlin AB aus:\n" + byte anzahlTickets = 0;
" Einzelfahrschein Regeltarif AB [%.2f EUR] (1)\n" + byte auswahlTicket = 0;
" Tageskarte Regeltarif AB [%.2f EUR] (2)\n" +
" Kleingruppen-Tageskarte Regeltarif AB [%.2f EUR] (3)\n" +
" Bezahlen (9)\n\n", preisEinzelfahrschein, preisTageskarte, preisKleingruppe);
System.out.print("Ihre Wahl: ");
auswahlTicket = tastatur.nextByte();
einzelBetrag = 0.0;
switch(auswahlTicket) { while (true) {
case 1: System.out.printf("\nWählen Sie:\n");
einzelBetrag = preisEinzelfahrschein; int i=0;
break; for (; i<bezeichnungen.length; i++)
case 2: System.out.printf(" %s [%.2f EUR] (%d)\n", bezeichnungen[i], preise[i], i+1);
einzelBetrag = preisTageskarte; System.out.printf(" Bezahlen (%d)\n", i+1);
break; System.out.print("Ihre Wahl: ");
case 3: auswahlTicket = tastatur.nextByte();
einzelBetrag = preisKleingruppe; try {
break; einzelBetrag = preise[auswahlTicket-1];
case 9: }
auswahl = false; catch (ArrayIndexOutOfBoundsException exception) {
break; if (auswahlTicket == i+1) break;
default: else {System.out.println(" >>falsche Eingabe<<"); continue;}
System.out.println(" >>falsche Eingabe<<"); }
break;
}
while (true) {
System.out.print("Anzahl der Tickets: ");
anzahlTickets = tastatur.nextByte();
if (!(anzahlTickets > 0 && anzahlTickets <= 10)) {
System.out.print("Es wurde ein ungültiger Wert für die Ticketanzahl eingegeben. \n"
+ "Bitte erneut versuchen.\n");
continue;
}
break;
}
zuZahlenderBetrag += anzahlTickets * einzelBetrag;
}
while (auswahl) { return zuZahlenderBetrag;
System.out.print("Anzahl der Tickets: "); }
anzahlTickets = tastatur.nextByte();
if (!(anzahlTickets > 0 && anzahlTickets <= 10)) {
System.out.print("Es wurde ein ungültiger Wert für die Ticketanzahl eingegeben. \n"
+ "Bitte erneut versuchen.\n");
continue;
}
break;
}
zuZahlenderBetrag += anzahlTickets * einzelBetrag; public static double fahrkartenBezahlen(double zuZahlenderBetrag) {
Scanner tastatur = new Scanner(System.in);
} // Geldeinwurf
// -----------
return zuZahlenderBetrag; double eingezahlterGesamtbetrag = 0;
} while(eingezahlterGesamtbetrag < zuZahlenderBetrag)
{
public static double fahrkartenBezahlen(double zuZahlenderBetrag) { System.out.printf("Noch zu zahlen: %.2f Euro \n", (zuZahlenderBetrag - eingezahlterGesamtbetrag));
Scanner tastatur = new Scanner(System.in); System.out.print("Eingabe (mind. 5Ct, höchstens 2 Euro): ");
// Geldeinwurf double eingeworfeneMünze = tastatur.nextDouble();
// ----------- eingezahlterGesamtbetrag += eingeworfeneMünze;
double eingezahlterGesamtbetrag = 0; }
while(eingezahlterGesamtbetrag < zuZahlenderBetrag) // Rückgeldberechnung
{ double rueckgabebetrag = eingezahlterGesamtbetrag - zuZahlenderBetrag;
System.out.printf("Noch zu zahlen: %.2f Euro \n", (zuZahlenderBetrag - eingezahlterGesamtbetrag)); return rueckgabebetrag;
System.out.print("Eingabe (mind. 5Ct, höchstens 2 Euro): "); }
double eingeworfeneMünze = tastatur.nextDouble();
eingezahlterGesamtbetrag += eingeworfeneMünze;
}
// Rückgeldberechnung
double rueckgabebetrag = eingezahlterGesamtbetrag - zuZahlenderBetrag;
return rueckgabebetrag;
}
public static void fahrkartenAusgeben () { public static void fahrkartenAusgeben () {
// Fahrscheinausgabe // Fahrscheinausgabe
// ----------------- // -----------------
System.out.println("\nFahrschein wird ausgegeben"); System.out.println("\nFahrschein wird ausgegeben");
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
System.out.print("="); System.out.print("=");
warte(250); warte(250);
} }
System.out.println("\n\n"); System.out.println("\n\n");
} }
public static void rueckgeldAusgeben(double rückgabebetrag) { public static void rueckgeldAusgeben(double rückgabebetrag) {
// Rückgeldausgabe // Rückgeldausgabe
// ------------------------------ // ------------------------------
if(rückgabebetrag > 0.0) if(rückgabebetrag > 0.0)
{ {
System.out.printf("Der Rückgabebetrag in Höhe von %.2f EURO \n", rückgabebetrag); System.out.printf("Der Rückgabebetrag in Höhe von %.2f EURO \n", rückgabebetrag);
System.out.println("wird in folgenden Münzen ausgezahlt:"); System.out.println("wird in folgenden Münzen ausgezahlt:");
while(rückgabebetrag > 1.9) // 2 EURO-Münzen while(rückgabebetrag > 1.9) // 2 EURO-Münzen
{ {
muenzeAusgeben(2, "EURO"); muenzeAusgeben(2, "EURO");
rückgabebetrag -= 2.0; rückgabebetrag -= 2.0;
} }
while(rückgabebetrag > 0.9) // 1 EURO-Münzen while(rückgabebetrag > 0.9) // 1 EURO-Münzen
{ {
muenzeAusgeben(1, "EURO"); muenzeAusgeben(1, "EURO");
rückgabebetrag -= 1.0; rückgabebetrag -= 1.0;
} }
while(rückgabebetrag > 0.49) // 50 CENT-Münzen while(rückgabebetrag > 0.49) // 50 CENT-Münzen
{ {
muenzeAusgeben(50, "CENT"); muenzeAusgeben(50, "CENT");
rückgabebetrag -= 0.5; rückgabebetrag -= 0.5;
} }
while(rückgabebetrag > 0.19) // 20 CENT-Münzen while(rückgabebetrag > 0.19) // 20 CENT-Münzen
{ {
muenzeAusgeben(20, "CENT"); muenzeAusgeben(20, "CENT");
rückgabebetrag -= 0.2; rückgabebetrag -= 0.2;
} }
while(rückgabebetrag > 0.09) // 10 CENT-Münzen while(rückgabebetrag > 0.09) // 10 CENT-Münzen
{ {
muenzeAusgeben(10, "CENT"); muenzeAusgeben(10, "CENT");
rückgabebetrag -= 0.1; rückgabebetrag -= 0.1;
} }
while(rückgabebetrag > 0.049)// 5 CENT-Münzen while(rückgabebetrag > 0.049)// 5 CENT-Münzen
{ {
muenzeAusgeben(5, "CENT"); muenzeAusgeben(5, "CENT");
rückgabebetrag -= 0.05; rückgabebetrag -= 0.05;
} }
} }
} }
public static void warte(int millisekunde) { public static void warte(int millisekunde) {
try { try {
Thread.sleep(millisekunde); Thread.sleep(millisekunde);
} catch (InterruptedException e) { } catch (InterruptedException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
} }
public static void muenzeAusgeben(int betrag, String einheit) { public static void muenzeAusgeben(int betrag, String einheit) {
System.out.println(betrag + " " + einheit); System.out.println(betrag + " " + einheit);
} }
public static void main(String[] args) public static void main(String[] args)
{ {
double zuZahlenderBetrag; double zuZahlenderBetrag;
double rueckgabebetrag; double rueckgabebetrag;
zuZahlenderBetrag = fahrkartenbestellungErfassen(); zuZahlenderBetrag = fahrkartenbestellungErfassen();
rueckgabebetrag = fahrkartenBezahlen(zuZahlenderBetrag); rueckgabebetrag = fahrkartenBezahlen(zuZahlenderBetrag);
fahrkartenAusgeben(); fahrkartenAusgeben();
rueckgeldAusgeben(rueckgabebetrag); rueckgeldAusgeben(rueckgabebetrag);
System.out.println("\nVergessen Sie nicht, den Fahrschein\n"+ System.out.println("\nVergessen Sie nicht, den Fahrschein\n"+
"vor Fahrtantritt entwerten zu lassen!\n"+ "vor Fahrtantritt entwerten zu lassen!\n"+
"Wir wünschen Ihnen eine gute Fahrt."); "Wir wünschen Ihnen eine gute Fahrt.");
} }
} }