首页 文章

在do / while循环中跳过Cin输入

提问于
浏览
0
cin >> subchoice;
        switch(subchoice)
        {
        case 1:
            gold = gold - 5;
            cout << "Now you only have " << gold << " gold.\n";
            cout << "blah blah";
            health = 100;
            break;
        case 2:
            cout << "blah blah"
                    << "1 - Head Back in and Buy a Bed\n"
                    << "2 - Find a Clothier Shop\n"
                    << "3 - Find a Blacksmith's\n";
            cin >> subsubchoice;
            switch(subsubchoice)
            {
            case 1:
                gold = gold - 5;
                cout << "Now you only have " << gold << " gold.\n";
                cout << "blah blah"
                health = 100;
                break;
            case 2:
                menuchoice = subsubchoice;
                break;
            case 3:
                menuchoice = subsubchoice;
                break;
            }
        }

    break;
    case 2:

    }




} while (!boolchoice);

嘿所以我在这里有这段代码 . 每当我运行它时,它总是会跳过sububchoice的cin输入 . 它应该做的是接受输入,或者让你进入旅馆或者将这个选择应用于menuchoice并在do-while循环开始时重新启动你 . 我不知道为什么它会跳过输入然后关闭程序 . 任何帮助表示赞赏 .

3 回答

  • 0

    也许你需要在 cin >> subsubchoice; 之前添加 cin.ignore()

  • 0

    你能解释一下输入的格式吗? cin读取所有输入,直到找到空白字符('\ n','\ t',''等) . 您是否有可能在原始输入中插入空格,例如“2 1”?

  • 1

    这个给你:

    • cout中有一个缺少的分号<<“你很快就会回到温暖的旅馆,放松一个温暖的夜晚,睡个好觉 . 你的 Health 状况会恢复到100 . \ n”;

    • 删除最后一个案例2:或添加休息时间;之后(更好地删除它,它是无用的) .

    • while(!boolchoice)保证为false,因为为了输入forst,boolchoice必须为非零 . 如果你想要它迭代,尝试使用while(gold)或while(health)退出当你没有黄金或 Health ...

    我希望这有帮助...

相关问题