【发布时间】:2013-11-28 21:48:27
【问题描述】:
我尝试使用 switch 做一个简单的菜单。我还想检查用户是否输入了有效的输入(仅从 1 到 4 的整数)。输入 -4 或 44 可以正常使用此检查。但是如果我输入像“w”这样的东西,它会给我一个无限循环。 我猜我需要另一个 if / else with if (!cin) blabla else 继续使用 switch。 但我不确定我是如何做到的,否则正在启动开关。
int menu() {
int enter;
bool exit = false;
do {
cout << "Wie soll angefangen werden: " << endl; //Enter your choice
cout << "1 - Spiel starten" << endl; // do game();
cout << "2 - Highscore " << endl; //do score();
cout << "3 - Quiz starten " << endl; //do quiz();
cout << "4 - Ende " << endl; //end the programm
cin >> enter;
switch (enter) {
case 1:
game();
break;
case 2:
score();
break;
case 3:
showQuizDialog();
break;
case 4:
exit = true;
break;
default:
cout << "Keine gültige Eingabe, nochmal: " << endl; //invalid input, again
void flushCin();
} //end of switch
} while (exit == false);
}//end of menu();
【问题讨论】:
-
什么是
flushCin?您不需要刷新已读取的流。 -
尝试将
int enter更改为char enter和case 1:更改为case '1': -
两点风格。第一:将
bool与常数进行比较是没有意义的;最终条件应该只是while ( !exit )。其次,你真的应该在默认情况下添加break;。
标签: c++ loops menu switch-statement infinite