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);

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

4

3 回答 3

1

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

于 2013-06-09T03:26:43.557 回答
0

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

于 2013-06-09T03:29:32.527 回答
0

给你:

  1. cout 少了一个分号<< "你赶紧回到温暖的客栈,好好的睡个温暖的夜晚,好好睡一觉。你的健康恢复到100。\n";

  2. 删除最后一种情况 2: 或添加中断;在它之后(最好删除它,它没用)。

  3. while (!boolchoice) 保证为假,因为为了进入 forst if,boolchoice 必须为非零。如果您希望它迭代,请尝试使用 while (gold) 或 while (health) 在您没有金子或健康时退出...

我希望这有帮助...

于 2013-06-09T04:21:39.090 回答