基本输入£无限循环

时间:2014-12-08 20:17:44

标签: c++ loops while-loop cin indefinite

这是我想要运行的非常基本的程序。要求用户在三种变体程序中进行选择,这些程序稍后将在代码中单独出现。

我想只接受整数输入,例如值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;    
}

1 个答案:

答案 0 :(得分:1)

你的病情应该是

while ( programversion < 1 || programversion > 3 )
{
    ...
}

你的while循环继续运行的原因是因为你当前的条件总是评估为true而循环永远不会中断(除非你输入1时)。 1||2||3只评估1,这是您的代码正确处理的唯一条件。如果要测试独立条件,则必须实际编写代码以单独测试这些条件。使用我上面的代码片段(检查programversion是否在1和3范围内)或在while表达式中使用多个检查来独立测试每个可接受的值。例如:

while ( programversion != 1 && programversion != 2 && ... )
{
    ...
}