我有一个菜单,用户必须在1-5之间输入一个数字,任何时候用户输入一个完美的数值,它将会转到指定的情况或者无效数字,它会进入默认状态,并出现一条错误消息。Switch/Case不间断循环
现在我的问题是,当用户输入一个字母表字母,程序保持循环和循环,它不会停止,每次通过默认。
我试了很多东西!使用if语句检查数字是否为1 < =值< = 5不起作用。如果输入不在这些值之间,我尝试在数字中进行硬编码,但它仍会永远循环。我试着做cim.good(),不知道我是否做得对,但我做到这一点的方式不起作用。我也尝试使用isdigit()函数,但同样的问题,它不起作用...我真的不知道我该做什么。这是我的(简化)。
int menu()
{
int key;
cout << endl << "--------- Main Menu ----------" << endl;
cout << "1: Sort" << endl << "2: Add" << endl;
cout << "3: Search" << endl << "4: History" << endl << "5: Exit" << endl;
cout << "Please pick one: ";
cin >> key;
return(key);
}`
void main()
{
Menu:
key = menu();
switch(key)
{
case 1:
goto Menu;
case 2:
goto Menu;
case 3:
goto Menu;
case 4:
goto Menu;
case 5:
break;
default:
cout << endl << "Invalid entry, please try again" << endl;
goto Menu;
}
}
我删除了箱子里面的东西,使其看起来更好。当我输入密钥时,我不断收到“无效输入,请再试一次”的消息,这就是它所经历的地方。
编辑:好吧,我为'goto'道歉,不知道它皱眉,还在学习!谢谢大家所有的帮助。我会开始删除它们。
'goto'?在C++中?奥利? http://stackoverflow.com/questions/3517726/what-is-wrong-with-using-goto – Jack
避免'goto',除非它使事情更容易理解。提示:这意味着专家可能会在十年内使用它一次,或者...... – Deduplicator
“我试着做cim.good(),不知道我是否做得对,但我做的方式不起作用。”请尽量给出更多细节,下次你做了什么,所以我们可以尝试给你一些关于你的错误的具体提示。 – LiKao