Ich habe folgendes Problem:
Ich habe ein kleines Programm für eine Passwortabfrage geschrieben! Der Kompiler sagt alles ist okay bliblablub ...
Nur stimmt irgendwas nicht mit der runterzähl-funktion von y ...
Wenn man die main() methode ausführt und immer eine falsche benutzerzahl und key eingibt tritt die break funktin im LoginTest schon bei 1 try verbleibend ein ...
was stimmt da nicht?
Hier der code:
Java:
// KlassepublicclassLogin{//Attributeprivateint loginzahl;privateint loginkey;privateboolean x =false;privateint y =6;//Methodenpublicvoid loginPruefen (){if(loginzahl ==123&& loginkey ==987){System.out.println ("Zugang gewährt");
x =true;}else{System.out.println ("Zugang verwehrt, try again!");if(y >=2){System.out.println (y -1+" Versuche verbleibend");if( y ==1){System.out.println ("Kein Versuch mehr verbleibend!");System.out.println ("Starten Sie das Programm erneut, für weitere Versuche!");;}else{
y--;}}}}publicboolean getX (){return x;}publicint gety (){return y;}publicvoid setLoginzahl (int p1){
loginzahl = p1;}publicvoid setLoginkey (int p2){
loginkey = p2;}}importjava.util.Scanner;publicclassTestLogin{publicstaticvoidmain(){Login user =newLogin();Scanner input =newScanner(System.in);while(user.getX()==false){System.out.println("Geben Sie die Anmeldenummer ein: ");
user.setLoginzahl(input.nextInt());System.out.println("Geben Sie den Anmeldekey ein: ");
user.setLoginkey(input.nextInt());
user.loginPruefen ();if(user.gety ()==1){break;}}}}
irgendwas stimmt entweder mit den gleichheits zeichen nicht oder mit der y-- funktion ...
wenn y 2 war und falsch eingegeben wurde, dann erscheint die Ausgabe '1 Versuch verbleibend', y wird auf 1 reduziert
und in der Main-Methode kommt das Break in Zeile 54/55,
da musst du auf 0 prüfen oder dir sonst den Ablauf anpassen
wie lautet dein aktueller Code?
bei mir gehts (swohl mit == 0 als auch == 1 in der main, ist nur ne Frage der Schönheit ob ein Versuch mehr oder weniger,
das muss man sich alles zurechtbiegen wie man es möchte)
Java:
publicclassTest{publicstaticvoidmain(String[] args){Login user =newLogin();Scanner input =newScanner(System.in);while(user.getX()==false){System.out.println("Geben Sie die Anmeldenummer ein: ");
user.setLoginzahl(input.nextInt());System.out.println("Geben Sie den Anmeldekey ein: ");
user.setLoginkey(input.nextInt());
user.loginPruefen();if(user.gety()==1){break;}}}}classLogin{// Attributeprivateint loginzahl;privateint loginkey;privateboolean x =false;privateint y =6;// MethodenpublicvoidloginPruefen(){
y--;if(loginzahl ==123&& loginkey ==987){System.out.println("Zugang gewährt");
x =true;}else{System.out.println("Zugang verwehrt, try again!");if(y >=2){System.out.println(y -1+" Versuche verbleibend");if(y ==1){System.out.println("Kein Versuch mehr verbleibend!");System.out
.println("Starten Sie das Programm erneut, für weitere Versuche!");;}else{}}}}publicbooleangetX(){return x;}publicintgety(){return y;}publicvoidsetLoginzahl(int p1){
loginzahl = p1;}publicvoidsetLoginkey(int p2){
loginkey = p2;}}
Nimm die if-Klausel in Zeile 18 raus und mache daraus ein "else if(...)" als Alternative für if (y>=2).
Java:
publicvoidloginPruefen(){
y--;if(loginzahl ==123&& loginkey ==987){System.out.println("Zugang gewährt");
x =true;}else{System.out.println("Zugang verwehrt, try again!");if(y >=2){System.out.println(y -1+" Versuche verbleibend");}elseif(y ==1){System.out.println("Kein Versuch mehr verbleibend!");System.out.println("Starten Sie das Programm erneut, für weitere Versuche!");;}}}