基本货币转换器

  • 本文关键字:转换器 货币 c++
  • 更新时间 :
  • 英文 :


我是一个初学者,我的代码有问题。每次我运行它时,在接近结束时,它总是转到else语句。我试着加入中断语句,看看这是否有帮助,但似乎没有效果。我还试着只做所有的if语句,而不是使用else-if。这段代码是用C++编写的。这是我的代码:

#include <iostream>
using namespace std;
class A
{
public:
int num;
void number()
{
cout << "1 for British Pound " << endl;
cout << "2 for Mexican Pesos " << endl;
cout << "3 for Japanese Yen " << endl;
cout << "4 for Chinese Yen " << endl;
cout << "5 for Australian Dollar "
<< "nn";
cout << "Enter number here: ";
cin >> num;
}
};
class B : public A
{
private:
float money;
float res;
public:
void ifs()
{
number();
if (num == 1)
{
cout << "Enter how much US money you have:  ";
cin >> money;
res = money * 0.77; // British pound is 0.77 for every US dollar.
cout << money << "$ in US is " << res << " in British pounds";
}
if (num == 2)
{
cout << "Enter how much US money you have:  ";
cin >> money;
res = money * 20.08; // Mexican Pesos is 20.08 for every US dollar.
cout << money << "$ in US is " << res << " in Mexican Pesos. ";
}
}
};
class C : public B
{
private:
float money, res;
public:
void ifs2()
{
ifs();
if (num == 3)
{
cout << "Enter how much US money you have:  ";
cin >> money;
res = money * 125.31; // Japansese Yen is 125.31 for every US dollar.
cout << money << "$ in US is " << res << " in Japanese Yen. ";
}
if (num == 4)
{
cout << "Enter how much US money you have:  ";
cin >> money;
res = money * 6.37; // Chinese Yen is 6.37 for every US dollar.
cout << money << "$ in US is " << res << " in Chinese Yen. ";
}
if (num == 5)
{
cout << "Enter how much US money you have: ";
cin >> money;
res = money * 1.35; // Australian Dollar is 1.35 for every US dollar.
cout << money << "$ in US is " << res << " in Australian Dollar. ";
}
else
{
cout << "Please enter a number that is listed above! ";
};
}
};
int main()
{
C obj;
obj.ifs2();
}
// This code is a US currency converter.
// It contains class and methods.

查看您的代码,您总是在重新评估num输入。

如果您想使用If语句,请考虑使用If/else构造:

void MyClass::foo() {
if (num == 1) {
} else if (num == 2) {
} /*...*/ {
} else {
// handle other cases here
}
}

然而,更合适的方法是在这里使用switch/case结构。它的工作方式与if/else类似,但提供了更干净的代码和更高的性能。

void MyClass::foo() {
switch (num) {
case 1: // handle first case
break;
case 2: // handle second case
break;
// add more cases as needed
default: // this would be your "else" block
break;
}
}
要在多个条件之间运行控制语句,必须使用else if。当使用else if时,它将依次评估if条件。目前,else仅适用于最后一个if (num == 5)

正确的答案是:

public:
void ifs2()
{
ifs();
if (num == 3)
{
cout << "Enter how much US money you have:  ";
cin >> money;
res = money * 125.31; // Japansese Yen is 125.31 for every US dollar.
cout << money << "$ in US is " << res << " in Japanese Yen. ";
}
else if (num == 4)
{
cout << "Enter how much US money you have:  ";
cin >> money;
res = money * 6.37; // Chinese Yen is 6.37 for every US dollar.
cout << money << "$ in US is " << res << " in Chinese Yen. ";
}
else if (num == 5)
{
cout << "Enter how much US money you have: ";
cin >> money;
res = money * 1.35; // Australian Dollar is 1.35 for every US dollar.
cout << money << "$ in US is " << res << " in Australian Dollar. ";
}
else
{
cout << "Please enter a number that is listed above! ";
};
}
};
int main()
{
C obj;
obj.ifs2();
}
if (num == 5)
{
cout << "Enter how much US money you have: ";
cin >> money;
res = money * 1.35; // Australian Dollar is 1.35 for every US dollar.
cout << money << "$ in US is " << res << " in Australian Dollar. ";
}
else
{
cout << "Please enter a number that is listed above! ";
};

这个else分支连接到if语句";num==5";。编译器逐行读取代码。它先读if,然后读second,然后读third。若第一个If语句为真或否,则它仍然转到下一个语句。同时,如果您输入的数字不是5,那么它将转到这个else语句。如果你用数字5测试这个程序,它会正常工作。否则,它将显示此else消息。使用if-else-if代替或切换大小写以消除歧义或重新评估。

最新更新