Java 如何打破循环?
每一个关注这个问题的人。我有一个小问题没有解决。我有一个程序,用户或经理可以登录,输入检查登录的人是用户还是经理。不幸的是,我不能把它们分开。这是我一直都能得到的Java 如何打破循环?,java,Java,每一个关注这个问题的人。我有一个小问题没有解决。我有一个程序,用户或经理可以登录,输入检查登录的人是用户还是经理。不幸的是,我不能把它们分开。这是我一直都能得到的 Incorrect username or password. Try Again! 代码如下: int check = 0; while(check == 0) { screen.displayString("Enter the username: "); String usern
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!");
}
}
再次感谢您的帮助。首先给出一些关于代码格式的小建议,在每个大括号/代码块留下一行空行后,它将更易于阅读 因此,让我们按照以下步骤稍微清理一下代码: 先做一些简单的任务,这意味着这个应用程序中有很多用户,但只有一个经理,所以我们应该先检查一下是不是他,不要浪费计算资源 删除冗余变量-要中断循环,不需要check变量,只需要在正确登录后使用break语句 可以使用for each遍历集合 这段代码应该更容易调试-只需在包含if语句的两行上放置2个断点,并检查值是否匹配。
如果您看到一切都很好,请检查字符串编码-可能Java默认使用的UTF8不匹配。manager是manager类型的对象。users是用户对象的arraylist。这些函数是管理器和用户的每个字段的getter函数。是否输入了错误的用户名或密码?对mesairamch04来说,逻辑看起来很好,是的,用户名和密码是正确的,因为我将它们存储在arraylist中,并且在输入用户名和密码时看到了它们。getString方法是否可能在最后插入换行符?什么是keypad?keypad.getString返回什么?例如,是否需要修剪线终止符?哈,我们两个想法一样谢谢你的建议。这很有帮助,因为现在代码可以区分管理者和用户。
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!");
}