void函数内的循环控制继续循环



void getDay() {
bool repeat;
do
{
cout << "Enter the day code (first 2 letters): ";
cin >> weekDay1;
cin >> weekDay2;
weekDay1 = toupper(weekDay1);
weekDay2 = toupper(weekDay2);

switch (weekDay1)
{
case 'M':
break;
case 'T':
break;
case 'W':
break;
case 'F':
break;
case 'S':
break;
default:
cout << "Invalid input. Please try again.n";
repeat = true;
break;
}

switch (weekDay2) 
{
case 'O':
break;
case 'U':
break;
case 'E':
break;
case 'H':
break;
case 'R':
break;
case 'A':
break;
default:
cout << "Invalid input. Please try again.n";
repeat = true;
break;
}

}while (repeat == true);

return;
}

我需要这个函数运行一次,如果输入不是可接受的字符之一,则循环。我试图防止任何错误的输入,但如果在初始运行时输入的输入不被接受,它就会无限循环。如果输入在第一次运行时很好,它可以正常工作,但是我不断得到运行时错误,因为没有初始化bool,我需要一些帮助来调整这个控件。

while循环中的条件始终是true,因为您从未在循环体中将其设置为false。你可以这样做:

void getDay() {
// Initializing while declaring is a good practice.
bool repeat = false;
do {
.
.
repeat = false;
.
switch(...) {
...
}
} while (repeat);
}

现在,只有当其中一条switch语句调用default时,才会调用repeat = true

最新更新