繁体   English   中英

扫描仪在while循环中,循环不会退出

[英]Scanner in a while loop, loop won't quit

我想从用户那里输入1或2,如果他不遵守正确答案,则再次提示用户输入答案。

我试图用while循环来做:

    int players = 0;
    players = sc.nextInt();

    while (players != 1 || players != 2)
    {
        System.out.println("Wrong input, choose again:");
        players = sc.nextInt();
        System.out.println(players);
    }

和一会儿:

    do
    {
        players = sc.nextInt();
    }
    while (players != 1 || players!= 2);

但是,即使输入正确的数字,循环也不会退出。

这种逻辑曾经在C中与scanf一起使用。

players != 1 || players != 2

这种情况总是正确的。 || 意味着or 因此,如果两个操作数中的至少一个为真,则该表达式为真

  • 如果玩家为1,则players != 2为真,因此整个表达式为真
  • 如果玩家为2,则players != 1为真,因此整个表达式为真
  • 如果玩家是其他人,那么两个表达式都是正确的。

您要&&而不是||

players != 1 || players!= 2 players != 1 || players!= 2始终为真,应该是players != 1 && players!= 2 我严重怀疑这种错误的逻辑对C有用!

如果您对布尔代数有所了解,则必须知道not(not(A) or not(B)) <=> A and B 在您的情况下,这意味着条件的否定(对于退出循环必须为真)是players == 1 && players == 2 ,这几乎是不可能的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM