1 回答
TA贡献1757条经验 获得超8个赞
您应该学习如何使用调试器,它会对您有所帮助。
问题出在这段代码中:
1 for (int i = 0; i < users.length; i++) {
2 if (username.equals(users[i])) {
3 for (int a = 0; a < usersPassword.length; a++) {
4 if (password.equals(usersPassword[i])) {
5 System.out.println("You have successfully logged in!");
6 status = "user";
7 currentUserIndex = i;
8 return;
9 } else {
10 System.out.println("Wrong password");
11 return;
12 }
13 }
14 } else {
15 System.out.println("User not recognized");
16 return;
17 }
18 }
当第二个用户调用 login() 并且它是第 2 行的第一个循环条件时,将返回 false(第二个用户的名称与第一个用户的名称不同)。因此,第 14 行的 else 将被调用。
要更正解决方案,您可以在第 14 行删除 else 并在 for 循环后添加 if 块:
//no changes before
} else if (hierarchy.equals("user")) {
for (int i = 0; i < users.length; i++) {
if (username.equals(users[i])) {
for (int a = 0; a < usersPassword.length; a++) {
if (password.equals(usersPassword[i])) {
System.out.println("You have successfully logged in!");
status = "user";
currentUserIndex = i;
return;
} else {
System.out.println("Wrong password");
return;
}
}
}
}
if (!status.equals("user")) {
System.out.println("User not recognized");
return;
}
}
//no changes after
添加回答
举报
