[英]switch case statement not working right?
所以我在一個簡單的控制台應用程序中制作菜單。 我的代碼差不多:(鏈接到底部的實際代碼!)
int input;
bool LOOPING = true;
while(LOOPING)
{
cout << "Select an option:\n";
cout << "1 - option 1\n";
cout << "2 - option 2\n";
cout << "3 - option 3\n";
cout << "4 - option 4\n>";
cin >> input;
switch(input) {
case 1:
game();
break;
case 2:
game();
break;
case 3:
game();
break;
case 4:
game();
break;
default:
cout << "ERROR: invalid input!\nPlease enter in a number!\n\n";
break;
}
}
// rest of app...
我的問題是,程序只是進入文本的不斷循環中! 為什么會這樣呢? 為什么default:
不阻止這種情況發生,我該如何阻止這種情況發生?
提前致謝!
編輯:要求提供真實代碼。
http://pastie.org/2415852
http://pastie.org/2415854
http://pastie.org/2415855
您的代碼無限循環,因為您從未將LOOPING
設置為false。 在真實代碼中,僅當用戶選擇退出時才將其設置為false,這將永遠不會發生,因為用戶在首次輸入非數字后將無法再輸入輸入。
輸入字符后,它不一直要求您輸入的原因是>>
不會消耗無效的輸入。 即如果>>
應該寫入一個int
,但是用戶輸入的內容不是有效的int,它將不會寫入該int,但是也不會從流中刪除用戶輸入(相反,它將簡單地設置cin
的錯誤標志,您應該檢查一下)。
輸入將保留在流中,直到您將其寫入其他地方或將其丟棄。 除非您這樣做,否則隨后的所有讀取int
嘗試都將失敗,因為無效輸入仍在流中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.