Lösungsvorschlag 8.4 - Aufgabe 1
Aus ComeniusWiki
import java.util.Scanner; public class Bankautomat{ //Mögliche Zustände werden als Aufzählungstyp enum vereinbart //b=bereit //ke="Karte eingegeben" //pin="Pin angezeigt" //betrag="Geldbetrag-Eingabe angezeigt" //ka="Karte in der Ausgabe" //ga="Geld in der Ausgabe" private enum Schritt {b, ke, pin, betrag, ka, ga}; //Variable zum Aufnehmen des aktuellen Ampelzustands (Variable ist vom Typ Ampelzustand) private Schritt z; //Scanner erzeugen für die Eingaben Scanner eingabe = new Scanner (System.in); //Variable für Karteneingabe String s; //Variable für abgehobenen Geldbetrag int geld; //Kontostand int kontostand = 1000; public Bankautomat(){ //Der Konstruktor erzeugt eine Bankautomateninstanz im Zustand "bereit" z=Schritt.b; } public void auszahlen(){ //Zustand "bereit" if(z==Schritt.b){ System.out.println("Bitte geben Sie Ihre Karte ein.('k' eingeben.)"); s=eingabe.next(); z=Schritt.ke; } //Zustand "Karte eingegeben" if(z==Schritt.ke){ if(karteErkennen(s)){z=Schritt.pin; System.out.println(); } else{System.out.println("Bitte entnehmen Sie Ihre Karte wieder."); z=Schritt.b; try{Thread.sleep(3000);}catch(InterruptedException ie){/*Nichts tun*/} System.out.println(); auszahlen();} } //Zustand "PIN-Eingabe angezeigt" if(z==Schritt.pin){ System.out.println("Bitte geben Sie Ihren PIN ein."); String p=eingabe.next(); boolean test=pinPruefen(p); if(test==true){z=Schritt.betrag; System.out.println();} else{System.out.println("Falscher PIN. Bitte entnehmen Sie Ihre Karte wieder."); z=Schritt.b; try{Thread.sleep(3000);}catch(InterruptedException ie){/*Nichts tun*/} System.out.println(); auszahlen(); } } //Zustand "Geldbetrag-Eingabe angezeigt" if(z==Schritt.betrag){ System.out.println("Bitte geben Sie den gewünschten Betrag ein. (Maximal 1000 Euro. Nur 50iger Schritte."); geld=eingabe.nextInt(); boolean test=betragPruefen(geld); if(test==true){z=Schritt.ka; System.out.println();} else{System.out.println("Ungültiger Betrag. Bitte entnehmen Sie Ihre Karte wieder."); z=Schritt.b; try{Thread.sleep(3000);}catch(InterruptedException ie){/*Nichts tun*/} System.out.println(); auszahlen(); } } //Zustand "Karte in der Ausgabe" if(z==Schritt.ka){ System.out.println("Bitte entnehmen Sie Ihre Karte.('e' eingeben.)"); s=eingabe.next(); System.out.println(); z=Schritt.ga; } //Zustand "Geld in der Ausgabe" if(z==Schritt.ga){ System.out.println("Bitte Geld entnehmen.('e' eingeben.)"); s=eingabe.next(); System.out.println("Ihr neuer Kontostand:"+(kontostand-geld)+" Euro."); try{Thread.sleep(3000);}catch(InterruptedException ie){/*Nichts tun*/} System.out.println(); z=Schritt.b; auszahlen(); } } private boolean karteErkennen(String s){ //weitere Prüfung der Gültigkeit if(s.equals("k")){return true;}else{return false;} } private boolean pinPruefen(String p){ String pin="0815"; if(p.equals("0815")){return true;}else{return false;} } private boolean betragPruefen(int b){ if(b>1000||b%50!=0){return false;}else{return true;} } }