我是新来的程序员。
我正在编程一个登录系统,该系统可以通过文件处理来验证用户名和密码。
我遇到了这个问题,我的登录系统可以验证我的password.txt中的第一对凭据,但是由于“ else”语句执行,因此如果第二条对执行,则没有机会验证第二对凭据。两个凭证不匹配。
所有帮助将不胜感激。
public void verifyLogin(String username, String password) throws FileNotFoundException {
try {
File readCredentials = new File("credentials.txt");
Scanner readFile = new Scanner(readCredentials);
boolean matchFound = false;
while (readFile.hasNextLine() && matchFound == false) {
uIUsername = readFile.nextLine();
uIPassword = readFile.nextLine();
if (uIUsername.equals(username) && uIPassword.equals(password)) {
System.out.println("You are logged in");
readFile.close();
matchFound = true;
}
else {
System.out.println("Error");
readFile.close();
matchFound = true;
}
}
}
catch (Exception e) {
System.out.println("Exception");
}
}
答案 0 :(得分:2)
循环完成后,您需要打印错误消息。请执行以下操作:
public void verifyLogin(String username, String password) {
Scanner readFile;
try {
File readCredentials = new File("credentials.txt");
readFile = new Scanner(readCredentials);
boolean matchFound = false;
while (readFile.hasNextLine() && matchFound == false) {
uIUsername = readFile.nextLine();
uIPassword = readFile.nextLine();
if (uIUsername.equals(username) && uIPassword.equals(password)) {
System.out.println("You are logged in");
matchFound = true;
}
}
if (!matchFound) {
System.out.println("Error");
}
} catch (Exception e) {
e.printStackTrace();
}
readFile.close();
}
请注意,我还只放置了一次readFile.close()
,而不是在if
和else
这两个部分都重复了。
另外,请注意,我使用了e.printStackTrace()
,它将确保在出现任何异常的情况下都能打印出完整的堆栈跟踪。