Java: Versuche immer um 1 abziehen?
Hallo, weiß jemand wie man programmieren kann, dass er die Versuche immer um 1 runterzählt wenn der Benutzer es falsch eingibt?
Mein Code:
void setup(){
String passwort;
passwort = PopUp.readLine("Bitte das Passwort eingeben");
int versuche = 5;
login(passwort,versuche);
String meinpasswort = ("password");
if (passwort.equals(meinpasswort)){
PopUp.print("Herzlich Willkommen zurück Benutzer!");
}
else {
PopUp.readInt("Sie haben noch "+versuche+" Versuche");
versuche = versuche - 1;
}
}
boolean login (String passwort, int versuche){
String meinpasswort = ("password");
while (versuche > 0){
if (meinpasswort.equals(passwort)){
print();
return true;
}
else {
versuche = versuche - 1;
}
}
return false;
}
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren, Java
Dein Code macht immer noch keinen Sinn und erfüllt die Aufgabe nicht. Erneut ein paar Anhaltspunkte:
- Warum machst du die Abfrage, ob "passwort" gleich ist zu "meinpasswort" in der setup-Methode und nicht nur in der login-Methode
- Warum verringerst du die Anzahl der Versuche in der setup-Methode, obwohl dort damit danach gar nicht mehr gearbeitet wird? Dort ist nicht mal eine Schleife enthalten, es bringt also gar nichts
- Warum speicherst du den Boolean, den dir deine Login-Methode nicht zurückgibt, in einer Variable und arbeitest damit? Oder, wenn du es nicht in einer Variable speichern willst, nutz deinen Aufruf der Login-Methode direkt in der if-Bedingung.
- Deine Login-Methode ist Sinnlos. Entweder entspricht der Inhalt der übergebenen Variable "passwort" eben dem String "password", dann wird true zurückgegeben (sofern Versuche größer 0 ist), sonst wird eben immer false zurückgegeben.
- Du hast genau eine einzige Nutzereingabe - am Anfang - danach wird das nie verändert. Du sollst bei jedem Versuch ein neues Passwort einlesen und eben das mit dem korrekten Passwort vergleichen! Implementiere das in deiner login-Funktion. Wenn das übereinstimmt, gibst du wahr zurück, sonst reduzierst du (im else-Block) eben versuche um 1, wie du es jetzt hier schon hast ...