Ich habe ein Programm mit zwei Klassen geschrieben das plump die Eingabe des PIN-Codes bei einen Bankautomaten simuliert dazu habe ich die Klasse Kartenbenutzer die nicht mehr tut als bei ihrer Initialisierung eine public int Variable mit dem Namen PIN zu erzeugen und eine Klasse pinueberpruefer die im Code so auszieht:
Ich würde jetzt erwarten, das die Ein-Ausgabe auf der Kosule in etwa so aussieht:
(Der Kartenbenutzer hat den PIN 1234)
1239
Ungueltige Eingabe noch 2 Versuche
12354
Ungueltige Eingabe noch 1 Versuch
2855
Karte gesperrt
Tatsächlich sieht sie so aus:
1239
Ungueltige Eingabe noch 2 Versuche
12354
Ungueltige Eingabe noch 1 Versuch
2855
Ungueltige Eingabe noch 0 Versuche
5899
Karte gesperrt
Was kann ich tun?
Java:
import java.util.Scanner;
public class PINUeberpruefen
{
private int zaehler;
private int maximum;
private Kartenbenutzer Kartenbenutzer;
/**
* Konstruktor für Objekte der Klasse PINUeberpruefen
*/
public PINUeberpruefen(Kartenbenutzer kar)
{
zaehler = 0;
maximum = 3;
Kartenbenutzer = kar;
}
public void neuerBenutzer(Kartenbenutzer neuKar){
Kartenbenutzer = neuKar;
}
public void pineingabe(){
Scanner sc = new Scanner (System.in);
while (sc.hasNext() && !sc.hasNextInt()) {
sc.next();
System.out.println("Geben Sie den PIN als Zahl ein!");
}
int PIN = sc.nextInt();
if (PIN == Kartenbenutzer.PIN){
System.out.println("Eingabe erfolgreich!");
} else {
if (zaehler < maximum){
zaehler++;
int noch=maximum-zaehler;
if (noch==1){
System.out.println("Ungueltige Eingabe noch "+noch+" Versuch");
pineingabe();
}else{
System.out.println("Ungueltige Eingabe noch "+noch+" Versuche");
pineingabe();
}
} else {
System.out.println("Karte gesperrt");
zaehler=0;
}
}
}
}
(Der Kartenbenutzer hat den PIN 1234)
1239
Ungueltige Eingabe noch 2 Versuche
12354
Ungueltige Eingabe noch 1 Versuch
2855
Karte gesperrt
Tatsächlich sieht sie so aus:
1239
Ungueltige Eingabe noch 2 Versuche
12354
Ungueltige Eingabe noch 1 Versuch
2855
Ungueltige Eingabe noch 0 Versuche
5899
Karte gesperrt
Was kann ich tun?