在 while 循环中找不到错误?

Can't find the error in while loop?

本文关键字:错误 找不到 while 循环      更新时间:2023-10-16

我设置了一个while循环,用于过滤错误的输入。我正在输入第一个while循环的条件为false的数字,2和35,但它正在屏幕上打印"请输入两个整数"。不应该,而且我找不到我的错误。很抱歉,如果这是一个愚蠢的问题,非常新的初学者。非常感谢您的帮助!感谢

这就是打印到屏幕上的内容:

输入测试素数的范围。输入两个正整数,较小的第一个,用空格分隔。

2

35

请输入两个整数。

//Input range
cout << "Enter range to test for primes. Enter two positive integers, the smaller first, separated by whitespace.n";
cin >> range_min >> range_max;
cout << range_min << range_max;
//Check if input is valid.
while (range_min < 0)
{
    cout << "Please input two *positive* integers.n";
    cin >> range_min >> range_max;
    while (range_max < 0)
    {
        cout << "Please input two *positive* integers.***n";
        cin >> range_min >> range_max;
        while (range_min > range_max)
        {
            cout << "Please input the smaller integer first.n";
            cin >> range_min >> range_max;
        }
    }
}

如果在while语句中添加另一个表达式,您将受益匪浅:

while ((range_min < 0) || (range_max < 0))
{
  cout << "Please enter positive range values: ";
  cin >> range_min >> range_max;
}

"||"表示逻辑或。它被读取为,而range_min<0或range_max<0

如果为True,则使用它时的构造也将接受值3和-1作为外部的合法范围,而循环只检查range_min值。如果range_min为3,因此大于0,则while循环将不会执行。

因此,在一些情况下,您希望用户输入新值:

1) 二者中有一者为阴性或两者均为

2) 两者均为正但相等,或者range_min大于range_max

 while ((range_min < 0 || range_max <= 0) || ((range_min>0 && range_max>0) && (range_min-range_max)<=0 )) {
    cout << "Invalid range! Enter two new values: ";
    cin >> range_min >> range_max;
}

但好吧,这仍然不能解释你所描述的行为的原因。我编译了你的代码,没有注意到这样的行为。第一个问题是,这是否是一个可复制的"错误"?这两个数字总是一样吗?