Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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:
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;
}
}
}
}
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?
1. Das was mein Vorposter geschrieben hat.
2. Müsstest du eigentlich erst die Bedingungen Prüfen, dann rechnen. Das Problem ist das man beim Methodenaufruf direkt ne Pin eingeben darf. Du musst aber vorher Prüfen ob der Nutzer das darf.
3. Sowas programmiert kein Mensch rekursiv. Ne Schleife drum herum würds wesentlich einfacher und sinniger machen.