基本输入 £ 无限循环

Basic input £ Indefinite looping

本文关键字:无限循环 输入      更新时间:2023-10-16

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

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

你的状况应该是

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

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

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