循环不能正常工作

时间:2017-06-21 20:44:35

标签: c++

新手在这里。如果这是一个简单的问题,请不要感到惊讶。

以下是这段代码:

#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>

char a;

int c = 0;

void mva()
{
    std::cout << "Nothing here yet, move along." << std::endl;
    std::cout << "Press \"e\" to exit or \"r\" to return" << std::endl;
}

void cho()
{
    std::cout << "Choose a valid option noob!" << std::endl;
    std::cout << "Press \"e\" to exit or \"r\" to return" << std::endl;
}

void menu()
{
    std::cout << "Welcome." << std::endl;
    std::cout << "Choose an option" << std::endl;
    std::cout << "1." << std::endl;
    std::cout << "2. " << std::endl;
    std::cout << "3." << std::endl;
    std::cout << "4." << std::endl;
    std::cout << "5." << std::endl; //5 is exit
}
int main()
{
    menu();
    std::cin >> c;
    switch (c)
    {
    case 1:
        mva();
        std::cin >> a;
        while (a != 'e' || a != 'r')
        {
            switch (a)
            {
                 case 'e':
                     exit(0);
                     break;

                 case 'r':
                     break;

                 default:
                     cho();
                     std::cin >> a;
                     break;
            }
        }
        break;
    case 5:
        exit(0);
        break;
    default:
        cho();
        std::cin >> a;
        while (a != 'e' || a != 'r') {
            switch (a)
            {
            case 'e':
                exit(0);
                break;

            case 'r':
                break;

            default:
                cho();
                std::cin >> a;
                break;
            }

        }
        break;
    }
return 0;
}

用户可以从5个选项中进行选择。当一个选项完成时(暂时只打印文本),用户应选择“e”(退出;此操作)或“r”返回菜单(只打印选项并带走用户)再次输入)。但是,按“r”然后输入不会再次打印选项并要求用户输入;它确实......没什么?我不知道该怎么做。我怀疑我需要在某处实现menu(),但我不知道在哪里。这个问题一直很混乱,我很感激帮助。

1 个答案:

答案 0 :(得分:1)

你的病情应该是

while (a != 'e' && a != 'r')

无论您输入的true值是多少,都始终为a