我有一個菜單,用戶必須在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