首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java: with循环用于输入用户名和密码3次-用break语句发出?

Java: with循环用于输入用户名和密码3次-用break语句发出?
EN

Stack Overflow用户
提问于 2017-09-13 14:09:36
回答 5查看 11.3K关注 0票数 0

我正在为类做分配,并希望创建一个循环,给用户3次登录的机会,输入正确的用户名和密码。

  • 成功后,发出“您现在登录”的消息。
  • 输入错误1-2次时,发出“错误输入,重试(.)”,然后提示再次输入用户名和密码
  • 输入错误3次时,发出“您输入错误三次(.)”的消息,然后退出系统

下面是我代码的一部分:

代码语言:javascript
复制
System.out.println("Enter password");
String inputPassword = input.next();

int count = 0;

//create while loop, set loop continuation condition to count < 3
while (count <= 2) {            

    if ((!inputUsername.equals(userName)) || (!inputPassword.equals(password))) {       
        System.out.println("Wrong entry. try again: Enter username");
        inputUsername = input.next();

        System.out.println("Enter password");
        inputPassword = input.next();
    }   
    else
        System.out.println("You are now logged in");    

    count++;

    break;  
}

if (count > 2)
 System.out.println("You have enterede wrong three times. Please try again in a few hours");
 System.exit(0);

知道为什么系统在两次尝试失败后退出而没有给我错误消息“您输入了错误三次(.)”吗?

我认为问题在于增加计数后的“中断”,但不确定。

如果没有此中断,如果输入成功,控制台将显示“您现在登录”3次,然后显示错误消息“您输入了错误的三次(.)”--这就是我为什么这么说的原因。

EN

回答 5

Stack Overflow用户

发布于 2017-09-13 14:20:02

你的break是无条件的。它将始终运行,这意味着您的循环将始终退出第一次迭代。

前两个失败的尝试都发生在第一次迭代之前和期间,然后单击break并退出。但是,由于您从未循环过,所以count只增加一次,就在中断之前。

我相信您打算使用大括号将break分组到else下。现在,由于您没有使用大括号,所以只有println语句是else的一部分。从不省略的大括号。

票数 0
EN

Stack Overflow用户

发布于 2017-09-13 14:27:58

谢谢卡西根!

这事儿可以理解!

与此同时,我找到了一个解决办法。我已经改变了继续的条件,它是有效的!

代码语言:javascript
复制
int count = 0;

//create while loop, set loop continuation condition to count <2
while (count < 2 && ((!inputUsername.equals(userName)) || (!inputPassword.equals(password)))) {
    System.out.println("Wrong entry. try again: Enter username");
    inputUsername = input.next();

    System.out.println("Enter password");
    inputPassword = input.next();
    count++;    
}   
if ((inputUsername.equals(userName)) && (inputPassword.equals(password)))
    System.out.println("You are now logged in");
else
    System.out.println("You have enterede wrong three times. Please try again in a few hours");

    System.exit(0);

再次感谢!

票数 0
EN

Stack Overflow用户

发布于 2017-09-13 14:57:56

你的“休息”需要移动。

代码语言:javascript
复制
System.out.println("Enter password");
String inputPassword = input.next();

int count = 0;

//create while loop, set loop continuation condition to count < 3
while (count <= 2) {            

    if ((!inputUsername.equals(userName)) || (!inputPassword.equals(password))) {       
        System.out.println("Wrong entry. try again: Enter username");
        inputUsername = input.next();

        System.out.println("Enter password");
        inputPassword = input.next();
    }   
    else {
        System.out.println("You are now logged in");
        break;
    }            

    count++;
}

if (count > 2)
    System.out.println("You have entered wrong three times. Please try again in a few hours");

System.exit(0);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46199788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档