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
+138 -146
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; String[] bezeichnungen = {"Einzelfahrschein Berlin AB",
double preisKleingruppe = 23.5; "Einzelfahrschein Berlin BC",
//===================================== "Einzelfahrschein Berlin ABC",
"Kurzstrecke",
Scanner tastatur = new Scanner(System.in); "Tageskarte Berlin AB",
"Tageskarte Berlin BC",
double zuZahlenderBetrag = 0.0; "Tageskarte Berlin ABC",
double einzelBetrag = 0.0; "Kleingruppen-Tageskarte Berlin AB",
byte anzahlTickets = 0; "Kleingruppen-Tageskarte Berlin BC",
byte auswahlTicket = 0; "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};
boolean auswahl = true;
while (auswahl) { Scanner tastatur = new Scanner(System.in);
System.out.printf("\nWählen Sie ihre Wunschfahrkarte für Berlin AB aus:\n" +
" Einzelfahrschein Regeltarif AB [%.2f EUR] (1)\n" + double zuZahlenderBetrag = 0.0;
" Tageskarte Regeltarif AB [%.2f EUR] (2)\n" + double einzelBetrag = 0.0;
" Kleingruppen-Tageskarte Regeltarif AB [%.2f EUR] (3)\n" + byte anzahlTickets = 0;
" Bezahlen (9)\n\n", preisEinzelfahrschein, preisTageskarte, preisKleingruppe); byte auswahlTicket = 0;
System.out.print("Ihre Wahl: ");
auswahlTicket = tastatur.nextByte(); while (true) {
einzelBetrag = 0.0; System.out.printf("\nWählen Sie:\n");
int i=0;
switch(auswahlTicket) { for (; i<bezeichnungen.length; i++)
case 1: System.out.printf(" %s [%.2f EUR] (%d)\n", bezeichnungen[i], preise[i], i+1);
einzelBetrag = preisEinzelfahrschein; System.out.printf(" Bezahlen (%d)\n", i+1);
break; System.out.print("Ihre Wahl: ");
case 2: auswahlTicket = tastatur.nextByte();
einzelBetrag = preisTageskarte; try {
break; einzelBetrag = preise[auswahlTicket-1];
case 3: }
einzelBetrag = preisKleingruppe; catch (ArrayIndexOutOfBoundsException exception) {
break; if (auswahlTicket == i+1) break;
case 9: else {System.out.println(" >>falsche Eingabe<<"); continue;}
auswahl = false; }
break;
default: while (true) {
System.out.println(" >>falsche Eingabe<<"); System.out.print("Anzahl der Tickets: ");
break; 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");
while (auswahl) { continue;
System.out.print("Anzahl der Tickets: "); }
anzahlTickets = tastatur.nextByte(); break;
if (!(anzahlTickets > 0 && anzahlTickets <= 10)) { }
System.out.print("Es wurde ein ungültiger Wert für die Ticketanzahl eingegeben. \n" zuZahlenderBetrag += anzahlTickets * einzelBetrag;
+ "Bitte erneut versuchen.\n"); }
continue;
} return zuZahlenderBetrag;
break; }
}
public static double fahrkartenBezahlen(double zuZahlenderBetrag) {
zuZahlenderBetrag += anzahlTickets * einzelBetrag; Scanner tastatur = new Scanner(System.in);
// Geldeinwurf
} // -----------
double eingezahlterGesamtbetrag = 0;
return zuZahlenderBetrag; while(eingezahlterGesamtbetrag < zuZahlenderBetrag)
} {
System.out.printf("Noch zu zahlen: %.2f Euro \n", (zuZahlenderBetrag - eingezahlterGesamtbetrag));
public static double fahrkartenBezahlen(double zuZahlenderBetrag) { System.out.print("Eingabe (mind. 5Ct, höchstens 2 Euro): ");
Scanner tastatur = new Scanner(System.in); double eingeworfeneMünze = tastatur.nextDouble();
// Geldeinwurf eingezahlterGesamtbetrag += eingeworfeneMünze;
// ----------- }
double eingezahlterGesamtbetrag = 0; // Rückgeldberechnung
while(eingezahlterGesamtbetrag < zuZahlenderBetrag) double rueckgabebetrag = eingezahlterGesamtbetrag - zuZahlenderBetrag;
{ return rueckgabebetrag;
System.out.printf("Noch zu zahlen: %.2f Euro \n", (zuZahlenderBetrag - eingezahlterGesamtbetrag)); }
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
{
muenzeAusgeben(1, "EURO");
rückgabebetrag -= 1.0;
}
while(rückgabebetrag > 0.49) // 50 CENT-Münzen
{
muenzeAusgeben(50, "CENT");
rückgabebetrag -= 0.5;
}
while(rückgabebetrag > 0.19) // 20 CENT-Münzen
{
muenzeAusgeben(20, "CENT");
rückgabebetrag -= 0.2;
}
while(rückgabebetrag > 0.09) // 10 CENT-Münzen
{
muenzeAusgeben(10, "CENT");
rückgabebetrag -= 0.1;
}
while(rückgabebetrag > 0.049)// 5 CENT-Münzen
{
muenzeAusgeben(5, "CENT");
rückgabebetrag -= 0.05;
}
}
}
public static void warte(int millisekunde) {
try {
Thread.sleep(millisekunde);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
while(rückgabebetrag > 0.9) // 1 EURO-Münzen
{
muenzeAusgeben(1, "EURO");
rückgabebetrag -= 1.0;
}
while(rückgabebetrag > 0.49) // 50 CENT-Münzen
{
muenzeAusgeben(50, "CENT");
rückgabebetrag -= 0.5;
}
while(rückgabebetrag > 0.19) // 20 CENT-Münzen
{
muenzeAusgeben(20, "CENT");
rückgabebetrag -= 0.2;
}
while(rückgabebetrag > 0.09) // 10 CENT-Münzen
{
muenzeAusgeben(10, "CENT");
rückgabebetrag -= 0.1;
}
while(rückgabebetrag > 0.049)// 5 CENT-Münzen
{
muenzeAusgeben(5, "CENT");
rückgabebetrag -= 0.05;
}
}
} }
public static void warte(int millisekunde) {
try {
Thread.sleep(millisekunde);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
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)
{
double zuZahlenderBetrag;
double rueckgabebetrag;
zuZahlenderBetrag = fahrkartenbestellungErfassen(); public static void main(String[] args)
rueckgabebetrag = fahrkartenBezahlen(zuZahlenderBetrag); {
fahrkartenAusgeben(); double zuZahlenderBetrag;
rueckgeldAusgeben(rueckgabebetrag); double rueckgabebetrag;
System.out.println("\nVergessen Sie nicht, den Fahrschein\n"+ zuZahlenderBetrag = fahrkartenbestellungErfassen();
"vor Fahrtantritt entwerten zu lassen!\n"+ rueckgabebetrag = fahrkartenBezahlen(zuZahlenderBetrag);
"Wir wünschen Ihnen eine gute Fahrt."); fahrkartenAusgeben();
} rueckgeldAusgeben(rueckgabebetrag);
System.out.println("\nVergessen Sie nicht, den Fahrschein\n"+
"vor Fahrtantritt entwerten zu lassen!\n"+
"Wir wünschen Ihnen eine gute Fahrt.");
}
} }