我需要用两个条件实现while循环

时间:2013-12-04 22:00:47

标签: c++

以下while循环有两个条件 cin>>用户;

while (( user != 'X') || ( user != 'O'))
{
    cout << "Please enter either X or O " << endl;
    cin >> user;
}

输入X或O后,它会不断要求输入新内容。我不明白为什么?但是,如果我删除条件,它可以正常工作。

7 个答案:

答案 0 :(得分:4)

想想&#34;这个东西不是X的逻辑,或者这个东西不是Y&#34; - 禁止在X和Y之间重叠,这样的条件总是为真,即使是英文也是如此!

你已经被口语和微妙的不同所误导了#34;这件事既不是X也不是Y&#34;但你的代码&#34;既不是X也不是Y&#34;,但&#34;不是X或不是Y&#34;。

你的意思是&#34;不是X而不是Y&#34;。

while (( user != 'X') && ( user != 'O'))

答案 1 :(得分:3)

使用&&(和)代替||(或)。

答案 2 :(得分:1)

你的情况总是如此......

while (( user != 'X') || ( user != 'O'))

如果user'X',则user不是'O',即使条件的第一部分不满足,条件的第二部分也会满足。所以整个条件是true

如果user'O',则相同。

尝试使用“逻辑和”(a.k.a。&&)而不是“逻辑或”。

答案 3 :(得分:0)

看起来你想要逻辑AND(&&)而不是逻辑OR(||)。

答案 4 :(得分:0)

如果您想更直观地理解发生的事情,请颠倒表达式的逻辑:

!=变为==||(或)变为&&(和)。

所以你写的是:

  

如果用户等于'X'并且用户等于'O',则退出循环。

正如您所看到的,user无法同时拥有这两个值。

你想要的是:

while (( user != 'X') && ( user != 'O'))
{
    cout << "Please enter either X or O " << endl;
    cin >> user;
}

答案 5 :(得分:0)

嗯,||表示或。如果你自己大声朗读条件,听起来就像“虽然用户不是X或用户不是O.如果你考虑它,它将永远是真的 - 当它是X时,它也不是O,当它它是O,它不是X.你可能需要的是&&

while (( user != 'X') && ( user != 'O'))

这样,当用户既不是X也不是O时,循环将停止。

答案 6 :(得分:0)

那是因为你正在使用OR运算符。

你问的是用户是不是X还是用户不是一直要求输入。

将其更改为&amp;&amp;操作