Hallo!
Schreiben Sie einen Algorithmus checkPasswd(word), der zur Überprüfung des eingegebenen Passworts dient. Bei der Eingabe eines Passworts hat man drei Versuche, das richtige Passwort einzugeben. Das Passwort wird in einer globalen Variablen (passwd) gespeichert und mittels der Funktion setPasswd(word) jeweils gesetzt oder geändert. Der Algorithmus checkPasswd(word) liefert true, falls das Passwort richtig ist, ansonsten false. Nach der dritten inkorrekten Passworteingabe wird jeglicher weitere Versuch, checkPasswd aufzurufen, sofort mit false beendet. Ein korrekter Versuch setzt alle Zählvariablen wieder auf den Initialzustand zurück. Als Einschränkung soll ein Passwort aus genau 6 Zeichen bestehen.
So habe ich es probiert.Also ich versuche kurz meinen Problem zu erklaren.Also das mit setPassword funktioniert.Ich gebe das password ein falls es zu lang is(6+ zeichen) kommt dieses print statement out.Ich habe es deswegen in ein println statement in main geschrieben das ich sehen kann welcher wert wird zuruckgegeben mit dem return password in der setPassword methode. Aber wenn ich jetzt nun versuche in check password es zu vergleichen kommt immer false zuruck.Ich denk ich weiss wieso,weil die checkPassword methode nicht die "aktuelles" password niemt,dieses das die methode setPassword zuruckgibt,sondern die globale variable set password,und das sie leer ist,wird immer false zuruckgegeben.
Also jetzt konnte man einfach es so machen.halt in der equals to methode es so machen;
word.equals(setPassword(password));
Und das klappt so,aber dann sieht der code sehr hasslich aus,da dieses print statement in setPassword zweimal kommt,und das ist einfach kein gutes programieren.Ist es moglich irgendwie dieser checkPassword methode das richtige password zu ubergeben? Also wenn ich ja logik denken wurde,musste ich zuerst diese globale variable den neun passwort zuweisen aber ich weiss nicht wie.
Und noch falls man die Aufgabenstellung richtig gelesen hat sollte es die moglichkeit geben den password 3 mal einzugeben,bevor das programm sperrt quasi.Also da hatte ich ne ide das ich eine do while schleife mach die aufhort bei 3 oder wenn dieser vergleich true ist,aber mir ware es wichtiger derzeit das ich das mit dem vergleich hinbekomme.
Freue mich auf eure Ideen!
Schreiben Sie einen Algorithmus checkPasswd(word), der zur Überprüfung des eingegebenen Passworts dient. Bei der Eingabe eines Passworts hat man drei Versuche, das richtige Passwort einzugeben. Das Passwort wird in einer globalen Variablen (passwd) gespeichert und mittels der Funktion setPasswd(word) jeweils gesetzt oder geändert. Der Algorithmus checkPasswd(word) liefert true, falls das Passwort richtig ist, ansonsten false. Nach der dritten inkorrekten Passworteingabe wird jeglicher weitere Versuch, checkPasswd aufzurufen, sofort mit false beendet. Ein korrekter Versuch setzt alle Zählvariablen wieder auf den Initialzustand zurück. Als Einschränkung soll ein Passwort aus genau 6 Zeichen bestehen.
Java:
import inout.*;
public class test {
static String password;
public static String setPassword(String password) {
Out.println("Please input a password");
password = In.readString();
if(password.length() > 6) {
Out.println("That password is too long");
}
return password;
}
public static boolean checkPassword(String word) {
Out.println("Enter the password");
word = In.readString();
return word.equals(password);
}
public static void main(String[] args) {
Out.println(setPassword(password));
Out.println(checkPassword(password));
}
}
So habe ich es probiert.Also ich versuche kurz meinen Problem zu erklaren.Also das mit setPassword funktioniert.Ich gebe das password ein falls es zu lang is(6+ zeichen) kommt dieses print statement out.Ich habe es deswegen in ein println statement in main geschrieben das ich sehen kann welcher wert wird zuruckgegeben mit dem return password in der setPassword methode. Aber wenn ich jetzt nun versuche in check password es zu vergleichen kommt immer false zuruck.Ich denk ich weiss wieso,weil die checkPassword methode nicht die "aktuelles" password niemt,dieses das die methode setPassword zuruckgibt,sondern die globale variable set password,und das sie leer ist,wird immer false zuruckgegeben.
Also jetzt konnte man einfach es so machen.halt in der equals to methode es so machen;
word.equals(setPassword(password));
Und das klappt so,aber dann sieht der code sehr hasslich aus,da dieses print statement in setPassword zweimal kommt,und das ist einfach kein gutes programieren.Ist es moglich irgendwie dieser checkPassword methode das richtige password zu ubergeben? Also wenn ich ja logik denken wurde,musste ich zuerst diese globale variable den neun passwort zuweisen aber ich weiss nicht wie.
Und noch falls man die Aufgabenstellung richtig gelesen hat sollte es die moglichkeit geben den password 3 mal einzugeben,bevor das programm sperrt quasi.Also da hatte ich ne ide das ich eine do while schleife mach die aufhort bei 3 oder wenn dieser vergleich true ist,aber mir ware es wichtiger derzeit das ich das mit dem vergleich hinbekomme.
Freue mich auf eure Ideen!