为什么我在这个函数中的while循环出现问题

Why am I having issues with my while loops in this function?

本文关键字:循环 while 问题 函数 为什么      更新时间:2023-10-16

函数用于读取两个值,最小值和最大值。如果其中一个值小于2,则会打印一条错误消息,并再次读入两个值。

我已经尝试过在min<2和max<2.我试着在or运算符的每一侧为每个条件加括号。我尝试在函数中声明两个变量,并将一个设置为等于max,将一个设为等于min,并在循环中使用这些新变量。

void read_range(int & min, int & max)
{
cout << "Enter minimum and maximum: ";
cin >> min >> max;
while (max < 2 || min < 2); {
cout << "Error. Minimum and maximum must be at least 2." << endl;
cout << "Enter minimum and maximum: ";
cin >> min >> max;
}
while (max < min) {
cout << "Error. Minimum must be less than maximum." << endl;
cout << "Enter minimum and maximum: ";
cin >> min >> max;
}
}

第二个while循环运行良好。

有两种奇怪的情况:1.如果任何一个输入的值小于2,程序将继续读取值,并且必须手动停止:

Enter minimum and maximum: 0 5
5 6
1 2
50 90
90 50
^Z
[23]+  Stopped
  1. 即使输入的两个值都大于2,while循环仍会执行。即使重新输入的值小于2:
Enter minimum and maximum: 5 10
Error. Minimum and maximum must be at least 2.
Enter minimum and maximum: 1 2
(program continues running after this).

此外,如果重新输入完全相同的值,则while循环不会再次执行:

Enter minimum and maximum: 5 10
Error. Minimum and maximum must be at least 2.
Enter minimum and maximum: 5 10
(program continues running after this)

感谢您的帮助。

您的第一个循环上有一个错误的;

while (max < 2 || min < 2); {

应该是这样的:

while (max < 2 || min < 2) {

while(max<2||min<2(;{

应该像这个

而(max<2|min<2({

输出:

输入最小值和最大值:11.错误最小值和最大值必须至少为2。

输入最小值和最大值:105.错误最小值必须小于最大值。

输入最小值和最大值:512无错误