[英]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
。 因此,如果两个操作数中的至少一个为真,则该表达式为真
players != 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.