我在下面得到了下面的代碼來做一個簡單的密碼(散列)檢查功能。但是我遇到了一個問題,代碼似乎只適用於文件中的單行數據,該檢查適用於Line1,但不適用於Line2,我不確定哪裏出錯。數據顯示如下Java登錄碼從文件中讀取多行不工作
的結果應該是hashedP只要符合1號線或2,但是最終匹配一號線僅
260670134225f2a24b59121739fec73584b0ddb6b49c39e31bd1df5483ac144d //Line1
cf80cd8aed482d5d1527d7dc72fceff84e6326592848447d2dc0b0e87dfc9a90 //Line2
代碼:
public static void LoginMenu() {
System.out.println("Please Enter Your Password: ");
Scanner UserPass = new Scanner(System.in);
String UserP = UserPass.nextLine();
String hashedP = Utility.getHash(UserP);
File file = new File("admin.dat");
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String fileline = scanner.nextLine();
if (!(fileline.equals(hashedP))) {
System.out.println("Login Failed!");
LoginMenu();
}
else {
System.out.println("Login Successful.\n");
AdminMenu();
}
}
scanner.close();
}
catch (FileNotFoundException exc) {
exc.printStackTrace();
}
}
究竟什麼是您的預期輸出,什麼是實際輸出? – 2015-04-06 10:29:51
預期的輸出應該是散列P匹配文件中的任何行,但它最終只匹配Line1 – 2015-04-06 11:28:31