【问题标题】:How to rewrite if else statement into switch statement如何将if else语句重写为switch语句
【发布时间】:2018-10-19 15:29:22
【问题描述】:

我了解 if else 语句和 switch 语句的工作原理,但我不明白您如何将此代码重写为 switch 语句 (C++),无论我认为是正确的结果都是错误..

#include <iostream>

using namespace std;

int main()
{

enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY
};

Day workDay;

workDay = MONDAY;

if (workDay == MONDAY)
{

cout << "Monday \n";
}

else if (workDay == TUESDAY)
{

cout << "Tuesday \n";
}

system("PAUSE");

return 0;
}

【问题讨论】:

  • 你试过什么?请正确格式化您的代码。
  • 如果你在帮助别人解决这个问题,你想知道什么?
  • 我认为正确的结果都是错误 - 尝试在哪里?错误在哪里?
  • 请阅读minimal reproducible example,并向我们展示包括错误在内的无效代码

标签: c++ if-statement switch-statement


【解决方案1】:

如前所述,尚不清楚您的期望。

另外,由于您将 workDay 设置为 MONDAY,它总是会打印 Monday,但它只是测试代码...

但是,本着希望提供帮助的精神,我认为您会追求这样的东西:

switch (workDay)
{
    case MONDAY: cout << "Monday \n"; break;
    case TUESDAY: cout << "Tuesday \n"; break;
    default: cout << "Not a supported day \n"; break;
}

您可以根据需要添加其他案例。我设置了默认值,因为这通常是个好主意。

【讨论】:

    【解决方案2】:
    Day workDay = Montag; 
    
    switch (workDay) {
        case Montag: 
            cout << "...";
            break; 
        case Dienstag: 
            cout << "..."; 
            break; 
        default: 
            cout << "...";  
            break;
    }
    

    您遇到了什么错误?

    【讨论】:

    • 一半是纯代码答案,另一半应该是评论,总的来说它不是一个好的答案(虽然不是我的反对意见)
    • 您忘记了break 语句。
    • 感谢您的反馈,是的,我忘记了休息声明。