每个关注此问题的人。我有一个小问题,我没有解决。我有一个程序,用户或管理员可以在其中登录,输入内容可以检查登录的人是用户还是管理员。不幸的是我无法分开他们。这就是我会一直得到的。
Incorrect username or password. Try Again!
这是代码:
int check = 0;
while(check == 0)
{
screen.displayString("Enter the username: ");
String usernameLogin = keypad.getString();
screen.displayString("Enter the password: ");
String passwordLogin = keypad.getString();
for (int i = 0; i < users.size(); i++) {
if (users.get(i).getUsername().equals(usernameLogin) && users.get(i).getPassword().equals(passwordLogin)) {
no = users.get(i).getId();
check = 1;
break;
}
else
{
check = 0;
}
}
if(check == 1)
{
break;
}
if (manager.getUsername().equals(usernameLogin) && manager.getPassword().equals(passwordLogin)) {
no = manager.getId();
check = 1;
break;
}
else {
check = 0;
}
if(check==0)
{
screen.displayStringLine("Incorrect username or password. Try Again!");
}
}
再次感谢您的帮助。
答案 0 :(得分:-1)
首先提供一些有关代码格式的小建议,在每个花括号/代码块都留空后,这将更易于阅读
因此,请遵循以下步骤来稍微清洁一下代码:
check
变量,只需正确登录后仅需break
语句while (true) {
screen.displayString("Enter the username: ");
String usernameLogin = keypad.getString();
screen.displayString("Enter the password: ");
String passwordLogin = keypad.getString();
if (manager.getUsername().equals(usernameLogin) && manager.getPassword().equals(passwordLogin)) {
no = manager.getId();
break;
}
for (User user : users) {
if (user.getUsername().equals(usernameLogin) && user.getPassword().equals(passwordLogin)) {
no = users.get(i).getId();
break;
}
}
screen.displayStringLine("Incorrect username or password. Try Again!");
}
此代码应该更易于调试-只需在包含if
语句的两行上放置2个断点,然后检查值是否匹配即可。
如果您发现一切看起来不错,请检查字符串编码-可能那里不匹配(Java默认使用UTF8)