1

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

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

1 回答 1

1

你的情况应该是

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

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

while ( programversion != 1 && programversion != 2 && ... )
{
    ...
}
于 2014-12-08T20:20:44.773 回答