我通過控制檯工作的一個銀行程序無限循環。我想在用戶輸入密碼時隱藏密碼。Console.readPassword()創建Java中
我創造了我自己的方法來讀取密碼,並返回使用readPassword()方法在控制檯類的字符串:
/**
* Reads Password without allowing the console to show the characters
while the user is typing the password.
* @return
*/
public String readPass(){
String pass = "";
Console cnsl = System.console();
if(cnsl!=null){
char[] pword = cnsl.readPassword();
for(char c: pword){
pass+=c;
}
return pass;
}
return "";
}
的方法是從另一個類叫做:
/**
* Asks the user to enter their password. Then checks if the password is right.
* @param u
*/
public void checkPassword(User u){
boolean pa = false;
do{
System.out.print("Please enter your password: ");
//String pword = in.next();
String pword = b.readPass();
pa = u.checkPassword(pword);
if(pa){
System.out.println("\nLogin Successful...");
System.out.println("\nWelcome "+ u.getName() + "!");
enterAccount(u);
}
else{
System.out.println("That is the incorrect password. Please try again.\n");
}
}while(!pa);
}
在提示密碼的那一刻,執行else塊並且結果是無限循環。
@AhsN內,他爲什麼要這麼做?它將作爲循環中的第一個語句執行。 – Seelenvirtuose
@SpecialK也許你的方法'User.checkPassword(String)'總是返回'false'?另外,如果你沒有控制檯會發生什麼?你將不會有機會輸入任何東西,但是你的'readPass'方法只是返回一個空字符串(總是)。也許這是你的無限循環? – Seelenvirtuose
你確定checkPassword正常嗎? – zubergu