我循环浏览文本文件,需要将文本文件的内容与用户提交的参数进行比较。我到目前为止编写的代码只会比较文本文件中的最后一个值。 问题:我如何不断循环并检查V参数传递的内容,当两者之间匹配时停止?
这是我到目前为止所拥有的:
public boolean isAuthenticated(String username, String password) throws FileNotFoundException{
boolean status = true;
File file = new File("C:\\" "\\" "\\login.txt");
Scanner scan = new Scanner(file);
List<Login> login = new ArrayList<Login>();
while(scan.hasNextLine()){
String line = scan.nextLine();
String [] details = line.split(":");
String storedUsername = details[0];
String storedPassword = details[1];
Login l = new Login(username, password);
if(storedUsername.equals(username)&& storedPassword.equals(password)){
status = true;
}else{
status = false;
}
}
return status;
}
谢谢! Query6273
答案 0 :(得分:0)
您的代码会将文件的每一行与用户名和密码进行比较。但是在每次迭代时,您将先前的status
值替换为当前行的状态。
所以你最终会返回最后一行的状态。
一旦找到了您正在寻找的用户,您需要立即退出循环。例如:
while (scan.hasNextLine()) {
...
if (storedUsername.equals(username) && storedPassword.equals(password)) {
return true;
}
}
或
// we haven't found the user yet, so status is false
boolean status = false;
while (scan.hasNextLine() && !status) {
...
if (storedUsername.equals(username) && storedPassword.equals(password)) {
status = true;
}
}
return status;
请注意,应正确关闭扫描仪。您应该使用try-with-resources。