×

ZULETZT ANGESEHEN

    Die Aufgabe der heutigen Stunde ist der Fahrscheinautomat! Dazu schauen wir uns mal die Aufgabe genauer an und versuchen durch intelligentes Lösen ein vollfunktionsfähiges Programm zu erstellen.
    Die Aufgabenstellung lautet:

    Ein Fahrscheinautomat gibt Wechselgeld in Münzen zurück und soll dabei möglichst wenige Münzen benutzen. Bei einem Fahrpreis von 13.20$ und einer Eingabe von 20$ gibt er als Wechselgeld drei 2$-Münzen, eine 50 Cent, eine 20 Cent und eine 10 Cent Münze zurück. Mit dem vorgegebenen Programm, welches du in deinem Heft finden kannst, kann der Fahrscheinautomat simuliert werden.
    Analysiere die Funktionsweise des Programms und vervollständige das Programm.

    Lösungsprozess der Aufgabe:

    Java
    
      /**
        *
        * Das fertige Java Programm des Fahrscheinautomats
        *
        * @version 1.0 vom 2.07.2025
        * @MeinInfoKurs.github.io
        */
                    
        public class FahrscheinAutomat {
            public static void main(String[] args) {
                double Fahrscheinpreis, Gezahlt, Wechselgeld;
                    
                Fahrscheinpreis = InOut.readDouble("Fahrscheinpreis: ");
                Gezahlt = InOut.readDouble("Gezahlt: ");
                    
                while (Gezahlt < Fahrscheinpreis) {
                    double ZuZahlen = Fahrscheinpreis - Gezahlt;
                    System.out.println("Noch " + ZuZahlen + " zu zahlen!");
                    Gezahlt = Gezahlt + InOut.readDouble("Zahle: ");
                } // end of while
                    
                Wechselgeld = Gezahlt - Fahrscheinpreis;
                    
                if (Wechselgeld > 0) {
                    System.out.println("Wechselgeld " + InOut.format2(Wechselgeld));
                    System.out.print("Rückgabe: ");
                } // end of if
                    
                    while (Wechselgeld >= 2) {
                        System.out.print("2 Euro ");
                        Wechselgeld = Wechselgeld - 2;
                    } // end of while
    
    
                    // Am Ende dieses IFs Statements kommt keine schließende Klammer hin. Das ist aus folgenden Gründen:
                    // 1. Wir überprüfen ob der gezahlte Preis > 0 ist;
                    // 2. Wir geben die Anzahl des Wechselgeldes aus und "print" (nicht "println") die Rückgabe der Münzen
                    // 3. Wir müssen jetzt noch die Rückgabe der Münzen ausrechnen
                    // -> Diese Berechnung muss im IF laufen, weil wenn sie außerhalb wäre, würde sie Konditionslos (also bei jeder ausführung)
                    //  laufen. Doch wenn der Nutzer passend zahlt, brauchen wir diese Rechnungen garnicht. Also nutzen wir hier ein IF-ELSE
                    //  So vergleichen wir die Bedingungen und es wird nur der Code ausgeführt, welcher wirklich ausgeführt werden muss
                    
                    if (Wechselgeld >= 1) {
                        System.out.print("1 Euro ");
                        Wechselgeld = Wechselgeld - 1;
                    } // end of if
                    
                    if (Wechselgeld >= 0.50) {
                        System.out.print("50 Cent ");
                        Wechselgeld = Wechselgeld - 0.50;
                    } // end of if
                    
                    if (Wechselgeld >= 0.20) {
                        System.out.print("20 Cent ");
                        Wechselgeld = Wechselgeld - 0.20;
                    } // end of if
                    
                    if (Wechselgeld >= 0.10) {
                        System.out.println("10 Cent ");
                        Wechselgeld = Wechselgeld - 0.10;
                    } // end of if
                    
                    if (Wechselgeld >= 0.05) {
                        System.out.print("5 Cent ");
                        Wechselgeld = Wechselgeld - 0.05;
                    } // end of if
                    
                    while (Wechselgeld >= 0.01) {
                        System.out.print("2 Cent ");
                        Wechselgeld = Wechselgeld - 0.02;
                    } // end of while
                    
                    if (Wechselgeld > 0.0) {
                        System.out.println("1 Cent");
                        Wechselgeld = Wechselgeld - 0.01;
                    } // end of if
                } else {
                    System.out.println("Passend bezahlt!");
                } // end of if-else
            } // end of main
        } // end of class FahrscheinAutomat
            

    In der Aufgabenstellung wird gefordert, dass wir folgende Funktionen in unseren Code implementieren:

    1. Nutzereingabe des Fahrscheinpreises
    2. Nutzereingabe des Gezahlten

    3. Ermittlung des Wechselgeldes
    4. Rückgabe in möglichst wenig Münzen

    5. Ausgabe des Wechselgeldes

    Berechnung des Wechselgeldes

    Da wir bereits wissen wie man eine Eingabe vom Nutzer erfordern kann und eine Konsolenausgabe erstellen können, gehen wir direkt zur Berechnung über. Als erstes Überprüfen wir ob wir überhaupt Wechselgeld ausgeben müssen indem wir den vom Nutzer gezahlten Betrag minus den Fahrscheinpreis rechnen. Wenn zu viel Geld gezahlt wurde, muss Wechselgeld gegeben werden. Wir nutzen also ein IF-ELSE Statement um zu prüfen ob Wechselgeld ausgegeben werden muss oder nicht. Wir nutzen das IF-ELSE um verschiedene Rückmeldung in der Konsole ausgeben zu können (je nach szenario).


     
        Wechselgeld = Gezahlt - Fahrscheinpreis;  // Beispiel: 08.01$ = 20.00$ - 11.99$ 
                    
        if (Wechselgeld > 0) {  // 08.01 > 00.00 = true -> IF Code wird ausgeführt
            System.out.println("Wechselgeld " + InOut.format2(Wechselgeld)); // Konsolenausgabe
            System.out.print("Rückgabe: "); // Konsolenausgabe
    
            // Hier die Berechnung der genauen Münzen
    
        } else { // 08.01 > 00.00 = true -> ELSE Code wird NICHT ausgeführt
            System.out.println("Passend bezahlt!"); // Keine Konsolenausgabe
        }
                        

    Vorherige Aufgabe

    Nächste Aufgabe