我有一個任務,我必須製作一個程序,它接受用戶輸入(需要自然數),然後打印出反向號碼。該程序確實很好,但是我也必須確保程序在輸入非自然數值時不會給我任何錯誤。如果我輸入雙精度值或者輸入數字後跟字符,程序將退出。在其餘的情況下,該程序運行得很好。什麼可能導致這些問題?當int需要時,輸入double後C++程序退出。怎麼修?
int number;
char x = 'c';
while (x == 'c') {
cout << "Enter a number\n";
cin >> number;
while (!(cin.good()) || number < 1 || floor(number) != number) {
cin.clear();
cin.ignore(256,'\n');
cout << "Try again.\n";
cin >> number;
}
string reverse;
stringstream convert;
convert << number;
reverse = convert.str();
reverse = string (reverse.rbegin(),reverse.rend());
cout << "The reverse number for number " << number << " is " << reverse << endl;
cout << "If you want to continue using the program enter 'c',\nif you want to close the program enter anythin else\n";
cin >> x;
}
您可以刪除'floor(number)!= number',這對於int來說永遠不會是真的,不管輸入是什麼。 –
floor()給你一個雙精度值,將它轉換爲整數。 –
不,「floor」會給你一個'double',它已經'floor'了。 '(int)doubleValue'給你一個'double'強制轉換爲'int'。 – OmnipotentEntity