如何打破循环?

时间:2019-01-27 22:04:38

标签: java

每个关注此问题的人。我有一个小问题,我没有解决。我有一个程序,用户或管理员可以在其中登录,输入内容可以检查登录的人是用户还是管理员。不幸的是我无法分开他们。这就是我会一直得到的。

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!");
        }
    }

再次感谢您的帮助。

1 个答案:

答案 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)