我是一名C++程序员,这只是我的第二个程序...这是美元和欧元之间的简单货币转换器。我遇到的问题是,如果我输入一个NaN值,它会这样说,然后再问,但是退出。有谁知道如何让它等到用户键入其他东西?也在第二个cin >> user_dollar我收到一个错误,说:“引用重载函数无法解析;你的意思是打电话吗?“对不起,这是如此之长,谢谢〜接收到NaN输入后,C++程序再次要求输入,然后退出
这是我的代码。我在MacBook Pro上使用Xcode。
#include <iostream>
using namespace std;
int main() {
string choice;
int user_dollar;
int user_euro;
cout << "Dollars to Euros (type ‘Dollars’) or Euros to dollars (type ‘Euros’)? ";
cin >> choice;
if (choice == "Dollars" || choice == "dollars") {
cout << "Enter dollar amount: ";
cin >> user_dollar;
if (isdigit(user_dollar) != true){
cout << "That’s not a number... " << endl;
cout << "Enter dollar amount: " << endl;
*cin >> user_dollar;*
}
else {
cout << "That is " << user_dollar/1.13 << " Euros." << endl;
}
}
else if (choice == "Euros" || choice == "euros") {
cout << "Enter Euro amount: ";
cin >> user_euro;
cout << "That is " << user_euro * 0.89 << " dollars." << endl;
}
}
1.你的程序没有循环。你希望它问'while'事情是真的。 2.阅读“std :: isdigit”的规范。 – philipxy 2015-02-07 00:41:59
嗨,感谢您的快速回复!如果我把'while'而不是'if'表示只是打印出“这不是一个数字......”和“输入美元金额:”无休止地。另外我不确定'std :: isdigit'是什么意思... – Minnow 2015-02-07 00:56:45
1.决定何时停止。没有那个循环。 (在一个循环内部做你想做的事情,确保底部已经准备好进行下一个测试。)2. isnan(x)表示x!= x表示x是NaN。搜索重新使用std :: isnan。 3.使用std :: isdigit重新搜索。 4.使用std :: cin重新搜索。除非你知道它的作用,否则不要调用函数。否则,你为什么要打电话? (修辞) – philipxy 2015-02-07 01:28:02