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
{
public static double fahrkartenbestellungErfassen (){
//Preise
double preisEinzelfahrschein = 2.9;
double preisTageskarte = 8.6;
double preisKleingruppe = 23.5;
//=====================================
Scanner tastatur = new Scanner(System.in);
double zuZahlenderBetrag = 0.0;
double einzelBetrag = 0.0;
byte anzahlTickets = 0;
byte auswahlTicket = 0;
boolean auswahl = true;
while (auswahl) {
System.out.printf("\nWählen Sie ihre Wunschfahrkarte für Berlin AB aus:\n" +
" Einzelfahrschein Regeltarif AB [%.2f EUR] (1)\n" +
" 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) {
case 1:
einzelBetrag = preisEinzelfahrschein;
break;
case 2:
einzelBetrag = preisTageskarte;
break;
case 3:
einzelBetrag = preisKleingruppe;
break;
case 9:
auswahl = false;
break;
default:
System.out.println(" >>falsche Eingabe<<");
break;
}
while (auswahl) {
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;
}
return zuZahlenderBetrag;
}
public static double fahrkartenBezahlen(double zuZahlenderBetrag) {
Scanner tastatur = new Scanner(System.in);
// Geldeinwurf
// -----------
double eingezahlterGesamtbetrag = 0;
while(eingezahlterGesamtbetrag < zuZahlenderBetrag)
{
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 double fahrkartenbestellungErfassen (){
// Array für Preise
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};
Scanner tastatur = new Scanner(System.in);
double zuZahlenderBetrag = 0.0;
double einzelBetrag = 0.0;
byte anzahlTickets = 0;
byte auswahlTicket = 0;
while (true) {
System.out.printf("\nWählen Sie:\n");
int i=0;
for (; i<bezeichnungen.length; i++)
System.out.printf(" %s [%.2f EUR] (%d)\n", bezeichnungen[i], preise[i], i+1);
System.out.printf(" Bezahlen (%d)\n", i+1);
System.out.print("Ihre Wahl: ");
auswahlTicket = tastatur.nextByte();
try {
einzelBetrag = preise[auswahlTicket-1];
}
catch (ArrayIndexOutOfBoundsException exception) {
if (auswahlTicket == i+1) break;
else {System.out.println(" >>falsche Eingabe<<"); continue;}
}
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;
}
return zuZahlenderBetrag;
}
public static double fahrkartenBezahlen(double zuZahlenderBetrag) {
Scanner tastatur = new Scanner(System.in);
// Geldeinwurf
// -----------
double eingezahlterGesamtbetrag = 0;
while(eingezahlterGesamtbetrag < zuZahlenderBetrag)
{
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 () {
// Fahrscheinausgabe
// -----------------
System.out.println("\nFahrschein wird ausgegeben");
for (int i = 0; i < 8; i++)
{
System.out.print("=");
warte(250);
}
System.out.println("\n\n");
// -----------------
System.out.println("\nFahrschein wird ausgegeben");
for (int i = 0; i < 8; i++)
{
System.out.print("=");
warte(250);
}
System.out.println("\n\n");
}
public static void rueckgeldAusgeben(double rückgabebetrag) {
// Rückgeldausgabe
// ------------------------------
if(rückgabebetrag > 0.0)
{
System.out.printf("Der Rückgabebetrag in Höhe von %.2f EURO \n", rückgabebetrag);
System.out.println("wird in folgenden Münzen ausgezahlt:");
// ------------------------------
if(rückgabebetrag > 0.0)
{
System.out.printf("Der Rückgabebetrag in Höhe von %.2f EURO \n", rückgabebetrag);
System.out.println("wird in folgenden Münzen ausgezahlt:");
while(rückgabebetrag > 1.9) // 2 EURO-Münzen
{
muenzeAusgeben(2, "EURO");
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 > 1.9) // 2 EURO-Münzen
{
muenzeAusgeben(2, "EURO");
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();
}
}
public static void muenzeAusgeben(int betrag, String einheit) {
System.out.println(betrag + " " + einheit);
}
public static void main(String[] args)
{
double zuZahlenderBetrag;
double rueckgabebetrag;
zuZahlenderBetrag = fahrkartenbestellungErfassen();
rueckgabebetrag = fahrkartenBezahlen(zuZahlenderBetrag);
fahrkartenAusgeben();
rueckgeldAusgeben(rueckgabebetrag);
public static void main(String[] args)
{
double zuZahlenderBetrag;
double rueckgabebetrag;
System.out.println("\nVergessen Sie nicht, den Fahrschein\n"+
"vor Fahrtantritt entwerten zu lassen!\n"+
"Wir wünschen Ihnen eine gute Fahrt.");
}
zuZahlenderBetrag = fahrkartenbestellungErfassen();
rueckgabebetrag = fahrkartenBezahlen(zuZahlenderBetrag);
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.");
}
}