我是一名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