是否可以为一个循环设置多个条件?在这种情况下,特别是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);
}
答案 0 :(得分:2)
您可以使用任何表达式求出true/false
的条件来形成循环条件,对可以放置多少个比较没有硬性限制。
但是,您的代码正在使用“或”门检查同一变量中是否存在两个不同的值,该门将始终返回true,因为一个变量只能保存一个值。如果input
是1
,则不能是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,循环将取消。但是,如果您不希望循环无限次地循环,我感到困惑。