是否可以为一个循环设置多个条件?

时间:2018-07-13 04:49:31

标签: c++ loops do-while

是否可以为一个循环设置多个条件?在这种情况下,特别是do ... while循环。我正在尝试回顾一些以前从未尝试过的旧内容,因为我天真地相信阅读示例代码已经足够好了,这样我可以获得一些经验,但是我没有尝试的工作。它要么无限期地结束循环,要么只考虑一个条件而与另一个条件保持循环。 预先感谢您的帮助。

#include <iostream>

using namespace std;

int main()
{
    int input;
    cout<<"What species do you belong to?"<<endl;
    cout<<"1 - Human\n2 - Other\n"<<endl;
    do
    {
        cin>>input;
        switch(input)
        {
        case 1:
            {
                cout<<"OK"<<endl;
                break;
            }
        case 2:
            {
                cout<<"what"<<endl;
                break;
            }
        default:
            {
                cout<<"INVALID INPUT\n"<<endl;
                break;
            }
        }
    }
    while(input!=1||input!=2);
}

3 个答案:

答案 0 :(得分:2)

您可以使用任何表达式求出true/false的条件来形成循环条件,对可以放置多少个比较没有硬性限制。

但是,您的代码正在使用“或”门检查同一变量中是否存在两个不同的值,该门将始终返回true,因为一个变量只能保存一个值。如果input1,则不能是2,如果是2,则不能是1,因此您的表达式将始终是true,并且是一个无限循环。

也许您想使用&&(和门)代替||

答案 1 :(得分:1)

要记住的一个关键概念是输入变量一次只能有一个值。就您的代码而言,您似乎想要:

  • 如果input的值不为1,则继续循环,并且
  • 如果input的值不是2,则继续循环。
  • 以及在其他任何情况下终止循环

要在以上两种情况下继续循环,可以组合逻辑运算符来实现。

具体来说,您可以使用逻辑运算符!=&&来表示:

  

当输入既不是1也不是2时继续循环

与说的话一样

  

输入不为1也不为2时继续循环

这可以通过如下更新代码中的循环条件来实现:

do {
    cin>>input;
    switch(input)
    {
    case 1:
        {
            cout<<"OK"<<endl;
            break;
        }
    case 2:
        {
            cout<<"what"<<endl;
            break;
        }
    default:
        {
            cout<<"INVALID INPUT\n"<<endl;
            break;
        }
    }

// Only allow the loop to continue if input is something other than 1 
// or 2, ie not 1 and not 2
} while(input!=1 && input!=2);

答案 2 :(得分:0)

我认为您在这里需要的是语句“ &&”而不是“ |”。 |”。例如,当您输入1时,条件输入!= 2为True,因此循环继续。使用and语句输入!= 1 &&输入!= 2,一旦输入为1或2,循环将取消。但是,如果您不希望循环无限次地循环,我感到困惑。