C++ 用Switch语句替换if-else

C++ 用Switch语句替换if-else,c++,switch-statement,C++,Switch Statement,我正在处理下面的代码,并尝试使用switch语句而不是if/else。 问题是我不知道如何让开关工作。 我试过几件事: 我知道每当一个表达式等于case常量时,代码就会被执行。例如: switch (expression) { case 1: // code to be executed if // expression is equal to 1; break; } 我下面的代码有一个类似的概念,但我无法让它显示计算。没有错误,但不显

我正在处理下面的代码,并尝试使用switch语句而不是if/else。 问题是我不知道如何让开关工作。 我试过几件事: 我知道每当一个表达式等于case常量时,代码就会被执行。例如:

switch (expression)  
{
  case 1:
        // code to be executed if 
        // expression is equal to 1;
        break;
}
我下面的代码有一个类似的概念,但我无法让它显示计算。没有错误,但不显示总价

#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

int main()
{

    const int CHEESE_PIZZA = 11;
    const int SPINACH_PIZZA = 13;
    const int CHICKEN_PIZZA = 14;

    cout << " *********** MENU ***********" << endl;
    cout << setw (9) << "ITEM" << setw (20) << "PRICE" << endl;
    cout << " (1) Cheese Pizza" << setw (8) << "$" 
            << CHEESE_PIZZA << endl;
    cout << " (2) Spinach Pizza" << setw (7) << "$" 
            << SPINACH_PIZZA << endl;
    cout << " (3) Chicken Pizza" << setw (7) << "$" 
            << CHICKEN_PIZZA << endl;
    cout << endl;

    cout << "What would you like? ";
    int option;
    cin >> option;
    cout << "You picked pizza option " << option << endl;

    cout << "How many orders? ";
    int quantity;
    cin >> quantity;
    cout << "You choose quantity " << quantity << endl;

    int price;
    switch (option)
    {
    case 1:
        price = CHEESE_PIZZA;
        break;
    case 2:
        price = SPINACH_PIZZA;
        break;
    case 3: 
        price = CHICKEN_PIZZA;
        break;
    default:
        cout << "Please select valid item from menu. " << endl;
    
    }
        return 1;
    int amount = price * quantity;
    cout << "Your Bill: $ " << amount << endl;
    
    cout << endl;


    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
奶酪比萨饼常数=11;
菠菜比萨饼常数=13;
const int CHICKEN_PIZZA=14;

cout从目测来看,问题似乎是因为您在switch语句之外返回了1,这就是为什么它之后的代码永远不会运行


您应该用
默认值替换案例4:
标签,并将
返回1;
移动到该案例中,并在案例3下添加
中断
语句。

从目测来看,问题似乎是因为
返回1
在switch语句之外,这就是为什么代码之后永远无法运行的原因


你应该用
默认值替换案例4:
标签,将
返回1;
移动到该案例中,并在案例3下添加
中断
语句。

在你的
开关
版本中,无论你选择什么,都会出现
返回1;
语句。我知道你是初学者,但你会被否决的这个问题的基本性质的原因。不幸的是,我一直被否决,这太糟糕了。一些观察结果-您缺少案例3:中断、案例4:中断和默认:语句。每个案例都需要中断或返回,以便模仿其他if行为。我不明白您的想法,但您在打印之前返回总价。尽量简化你的代码以减少噪音。例如,不要问我想要什么样的比萨饼。这让我有机会进入“无壳”,这会弄乱您的程序。相反,请使用类似于
int option=1;//模拟用户输入的行。
。让代码只关注
开关。
。谁知道呢?有时,在提问之前创建一个好的选项可以得到答案。我相信,您还需要将选项解析为整数。我认为您无法存储输入使用cin作为int.@TEDLYNMO,我猜这是真的,但我永远不会在开关内部使用continue语句-对于if语句,break将退出循环,但是对于switch语句,break将退出开关并继续循环。这让我个人感到困惑。在您的
开关
版本中,
返回1;
无论你选择什么,陈述都会发生。我知道你是个初学者,但由于这个问题的基本性质,你会被否决。不幸的是,我一直被否决,这太糟糕了。一些观察结果-你遗漏了一个案例3:中断、案例4:中断和默认:陈述。每个案例都需要中断或返回以模仿其他if行为。我不明白你的想法,但你在打印总价之前返回。尝试简化代码以减少噪音。例如,不要问我想要什么样的比萨饼。这让我有机会输入“无壳”,这会弄乱您的程序。相反,请使用类似于
int option=1;//模拟用户输入的行。
。让代码只关注
开关。
。谁知道呢?有时,在提问之前创建一个好的选项可以得到答案。我相信,您还需要将选项解析为整数。我认为您无法存储输入使用cin作为int.@TEDLYNMO,我猜这是真的,但我永远不会在开关内部使用continue语句-使用if语句时,break将退出循环,但使用switch语句时,break将退出开关并继续循环。这让我个人感到困惑。谁想到的!我花了几个小时在这方面,却看不到它。T非常感谢。默认函数对上一条语句有帮助。中断是个错误。哦,天哪!我真不敢相信我错过了那个…谁想到的!我花了几个小时在这个上面,却看不到那个。非常感谢。默认函数对上一条语句有帮助。中断是个错误。哦,天哪!我真不敢相信我错过了那个。。。
int price;
if (option == 1) price = CHEESE_PIZZA;
else if (option == 2) price = SPINACH_PIZZA;
else if (option == 3) price = CHICKEN_PIZZA;
else {
cout << "Please select valid item from menu. " << endl;
return 1;
}