【问题标题】:How could I code if-statement after switch-statement in C++?如何在 C++ 中的 switch 语句之后编写 if 语句?
【发布时间】:2021-05-04 22:57:38
【问题描述】:

我正在编写一个代码来计算我在 C++ 中的课堂作业的通行费。代码如下所示。我的问题是我只想执行计算,即toll = vRate * distance 如果它满足任何一种情况。如果输入无效,默认只显示“无效输入”,无需计算。例如:

if !(default), 
    toll = vRate * distance;
    cout << "RM" <<toll << endl; 

但是,我知道这行不通。因此,有什么想法可以修改代码以使其清晰明了吗?提前谢谢你。

#include <iostream>
using namespace std;
int main()
{
    char vCode;
    double vRate; // Toll rate for the vehicle
    double toll, distance;
    
    cout << "Enter vehicle code: " << endl;
    cin >> vCode; // C-Car, B-Bus, T-Truck, M-Motorbike
    cout << "Enter the distance travelled by the vehicle (in km): " << endl;
    cin >> distance;
    
    switch(vCode)
    {
        case 'C' : cout << "vRate = 50%" << endl;
        vRate = 0.5;
        break;
        case 'B' : cout << "vRate = 85%" << endl;
        vRate = 0.85;
        break;
        case 'T' : cout << "vRate = 100%" << endl;
        vRate = 1.00;
        break;
        case 'M' : cout << "Free toll" << endl;
        vRate = 0.00;
        break;
        default  : cout << "Invalid Vehicle Code" << endl;
    }
    toll = vRate * distance;
    cout << "RM" <<toll << endl; 
    return 0;
}

【问题讨论】:

  • switch 语句块以右大括号 (}) 结束。恐怕我没有完全理解您的问题,请您详细说明一下吗?
  • 花几天时间阅读有关 C++ 的内容:阅读 a good C++ programming book 然后阅读 this C++ reference 然后阅读 C++ 编译器(例如 GCC...,用作 g++ -Wall -Wextra -g)和调试器的文档(例如GDB...)
  • “如何在 C++ 中的 switch 语句之后编写 if 语句?” 你可以编写 switch (vCode) { /* ... */ } if (/* condition */) { /* ... */ }
  • default: 中使用return 语句。什么可以更容易?或者您可以在切换后double vRate = -1;if (vRate &gt;= 0)
  • 感谢您帮助我澄清问题。

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


【解决方案1】:

在 switch 结束后,你无法检查是否使用了默认大小写。你需要做一些不同的事情来达到你想要的结果。

您可以做的一件事是在进入默认部分时停止进一步处理

default: 
    cout << "Invalid Vehicle Code" << endl;
    return 0;

这将使程序在输出“无效车辆代码”后停止。这将适用于您的情况,但如果您之后必须在程序中执行其他操作,那将无法正常工作。

更好的方法是创建附加变量isValid,用于在switch语句后检查输入是否有效

bool isValid = true;
switch(vCode)
{
    case 'C' : cout << "vRate = 50%" << endl;
    vRate = 0.5;
    break;
    case 'B' : cout << "vRate = 85%" << endl;
    vRate = 0.85;
    break;
    case 'T' : cout << "vRate = 100%" << endl;
    vRate = 1.00;
    break;
    case 'M' : cout << "Free toll" << endl;
    vRate = 0.00;
    break;
    default  : cout << "Invalid Vehicle Code" << endl;
    isValid = false;
}
if (isValid)
{
    toll = vRate * distance;
    cout << "RM" <<toll << endl; 
}

这不是唯一的方法,如果是分配的话,这只是我会做的几种方法。

【讨论】:

  • 谢谢你的想法!
猜你喜欢
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多