开关盒不起作用

时间:2017-04-30 07:25:48

标签: c++ while-loop switch-statement

#include <iostream>
#include <string>

using namespace std;
int main()
{
    char option='0';
    do
    {

        cin >> option;
        switch (option) 
        {
            case '1':
                cout << "testing 1\n";
                break;
            case '2':
                cout << "testing 2\n";
                break;
            case '3':
                cout << "Thank you, Have a nice day.\n";
                break;

            default:
                cout << "Invalid option, Please enter option (1-3).";
        }

    }while (option != 3);

    return 0;
}

我不知道为什么while循环是无限的。当我键入3时,它应打印出Thank you, Have a nice day.并退出循环while (option != 3)。但是,似乎while循环不起作用。

4 个答案:

答案 0 :(得分:6)

更改

while (option != 3);

while (option != '3');

3与'3'不同。一个是整数,另一个是字符。

答案 1 :(得分:2)

您的变量被声明为char,而wile循环将该值作为整数进行比较。

您应该将变量的签名更改为数字(整数,长整数,短整数等),或更改while循环条件以计算为字符值(选项!='3'),或者您甚至可以将选项变量与等效数值进行比较('0'= 48,'1'= 49 ...)。

答案 2 :(得分:1)

你的代码的问题是在while循环中检查是否选项!= 3,它正在比较char和int。你应该做的是选择!='3',就像这样。

#include <iostream>
#include <string>

using namespace std;
int main() {
    char option;
    do {

        cin >> option;
        switch (option) {
        case '1':
            cout << "testing 1\n";
            break;
        case '2':
            cout << "testing 2\n";
            break;
        case '3':
            cout << "Thank you, Have a nice day.\n";
            break;
        default:
            cout << "Invalid option, Please enter option (1-3).";
        }
    } while (option != '3');

    return 0;
}

答案 3 :(得分:1)

while (option != 3); //Here is your problem.

3 vs'3'不同。 你应该写while (option != '3');