为了账号安全,请及时绑定邮箱和手机立即绑定

如何打破循环?

如何打破循环?

慕姐4208626 2022-05-25 10:31:30
每个正在看这个问题的人。我有一个小问题,我没有解决。我有一个用户或经理可以登录的程序,输入检查登录的人是用户还是经理。不幸的是,我无法将它们分开。这就是我一直得到的。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 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

首先对代码格式提出一些小建议,在每个花括号/代码块之后留下一个空行 - 它会更容易阅读

因此,让我们通过遵循以下步骤来稍微清理一下您的代码:

  • 先做更简单的任务,这意味着这个应用程序中有很多用户,但只有一个经理,所以也许我们应该先检查是不是他,而不是浪费计算资源

  • 删除多余的变量 - 要打破循环,您不需要check变量,只需break正确登录后的语句

  • 您可以使用 for each 来遍历集合

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)


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信