这是我想要运行的非常基本的程序。要求用户在三种变体程序中进行选择,这些程序稍后将在代码中单独出现。
我想只接受整数输入,例如值1,2,3,4和5。由于某种原因,当前程序仅接受1输入,而while循环无限期地重复非整数输入。
有人可以发现这两个问题,并为我提出一些修正建议吗?提前谢谢。
代码:
#include <iostream>
using namespace std;
int main() {
int programversion;
cout << "Which program version would you like to run? Basic [1], advanced [2], or advanced-variant [3]?\n";
cin >> programversion;
while (programversion != (1||2||3))
{
cout << "That is not a correct input integer - please choose [1], [2] or [3]\n";
cin >> programversion;
}
if (programversion == 1)
{
cout << "You chose option 1.\n";
}
if (programversion == 2)
{
cout << "You chose option 2.\n";
}
if (programversion == 3)
{
cout << "You chose option 3.\n";
}
return 0;
}
答案 0 :(得分:1)
你的病情应该是
while ( programversion < 1 || programversion > 3 )
{
...
}
你的while
循环继续运行的原因是因为你当前的条件总是评估为true而循环永远不会中断(除非你输入1
时)。 1||2||3
只评估1
,这是您的代码正确处理的唯一条件。如果要测试独立条件,则必须实际编写代码以单独测试这些条件。使用我上面的代码片段(检查programversion
是否在1和3范围内)或在while
表达式中使用多个检查来独立测试每个可接受的值。例如:
while ( programversion != 1 && programversion != 2 && ... )
{
...
}