簡體   English   中英

切換案例聲明無法正常工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM