首页 > 解决方案 > C++ 嵌套 if 语句,基本货币兑换

问题描述

我的 if 语句有一个简单的 C++ 问题,程序将值作为初始 if 参数运行,而不是执行 else if。我还尝试编写代码,以便如果函数的结果等于 1,它将输入语法正确的语句,除了使用另一个 if 语句之外,还有更好的方法吗?

int main()
{
cout << "Please type out amount and currency type to convert to dollars.\n";
double val1;
string currency;
double result = 0;
cin >> val1 >> currency;
if (currency == "yen" || "y")
{
    result = val1/100;
    if (result == 1) {
        cout << "You have " << val1 << "yen which equals \n"
            << result << ", dollar.";
    }
    else
    cout << "You have " << val1 << "yen which equals \n"
        << result << ", dollars.";
}
else if (currency == "euros" || "e")
{
    result = val1*1.25;
    if (result == 1) {
        cout << "You have " << val1 << "euros which equals \n"
            << result << ", dollar.";
    }
    else
        cout << "You have " << val1 << "euros which equals \n"
        << result << ", dollars.";
}
else if (currency == "pounds" || "p")
{
    {
        result = val1 *1.2;
        if (result == 1) {
            cout << "You have " << val1 << "pounds which equals \n"
                << result << ", dollar.";
        }
        else
            cout << "You have " << val1 << "pounds which equals \n"
            << result << ", dollars.";
    }
}
else
    cout << "I didn't understand, please try again.\n";
}

标签: c++if-statement

解决方案


当您输入 时if (currency == "yen" || "y"),您可能希望它的意思是“如果currency等于"yen"或等于"y",做某事”。

但是,这不是您的 if 语句实际执行的操作。if 语句

if (currency == "yen" || "y")

首先测试字符串currency是否等于"yen",如果不等于,它会自行评估"y"并检查它是否等于真。

在这种情况下,“y”将被截断为 a bool,这意味着它将评估为true(因为"y"不等于0)。结果,您的第一个 if 语句将始终评估为真!

要解决此问题,请将您的 if 语句替换为 if (currency == "yen" || currency == "y").


对于第二个问题,您可以使用条件运算符,其工作原理如下:

cout << "You have " << (val1 == 1 ? "thing" : "things") << endl;

这种情况下的条件是(val1 == 1 ? "thing" : "things")。它检查 if ,如果是val1 == 1则返回,否则返回。"thing"true"things"


推荐阅读