使用嵌套的if语句执行while循环,而不是在c ++中退出

时间:2011-12-04 22:38:03

标签: c++

好的,所以我对整个do while循环事物都是新手,我正在尝试创建一个主菜单,这是我的代码:

int main()
{
    int choice;
    char sure;
    bool quit = false;
    char ctrl;

    do
    {
        cout << "Main Menu." << endl
             << "1. New Game." << endl
             << "2. Load Game." << endl
             << "3. Exit." << endl
             << "Your choice: ";
        cin >> choice;

        if (choice == 1)
        {
            cout << "Are you sure you wish to start a new game? (Y/N) ";
            cin >> sure;

            if (sure != 'N' || sure != 'n')
            {
                ctrl = 'a';
                quit = true;
            }
        }
        else if ( choice == 2)
        {
            ctrl = 'b';
            quit = true;
        }
        else
            quit = true;

        }
    }
    while (quit == true);

    if (ctrl = 'a')
         cout << "New Game." << endl;
    else if (ctrl = 'b')
         cout << "Load Game." << endl;
    else
         cout << "Goodbye." << endl;

    return 0;
}

有一些getchar()在那里抛出。但唯一的问题是,你可能会发现,在我做完所有事情之后,它只会重新启动,而不是退出循环。代码中有什么问题?

由于

3 个答案:

答案 0 :(得分:5)

我认为你的意思是while (quit != true);

请记住,与==进行比较,if (ctrl = 'a')'a'分配给ctrl ..

答案 1 :(得分:4)

你没有在任何地方将quit设置为false,并且当quit等于true时你的循环运行。您需要直接获取布尔值的含义,或者只需将while部分更改为while(!quit)。我宁愿第一个。

答案 2 :(得分:2)

你不应该只是改变

    while (quit == true);

    while (quit != true);

也许你知道,但我会重复一遍

do{
//...
} while(condition)

循环有效。迭代直到条件为 false 。在你的情况下,总是为真,这就是你有一个无限循环的原因。

P.S。也可以在answer获取战利品。那里描述了另一个错误。

希望所有纠正错误的错误代码是here