这是代码......
#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>
using namespace std;
void CorrectPercent(double Percent) {
unsigned short int Error = 0;
while (Error==0){
cout << "\nEnter the annual interest rate (%):\t\t";
cin >> Percent;
do {
if (Percent <= 0) {
cout << endl << "Please enter a valid annual interest rate (%): ";
cin >> Percent;
} else if (isnan(Percent) == true) {
cout << endl << "Please enter a valid annual interest rate (%): ";
cin >> Percent;
}
else {
Error=1;
}
} while (Error == 0);
//Error++;
}//while (Error == 0);
}
int main()
{
double Percent;
char Retry = 'Y';
do
{
cout << setprecision(2) << fixed;
system("cls");
CorrectPercent(Percent);
} while (Retry == 'Y' || Retry == 'y');
return 0;
}
CorrectPercent函数应该一直运行,直到输入有效的数值。所以,问题是,如何检测输入是数字?仅供参考,我正在开发Visual Studio 2015。
答案 0 :(得分:-3)
由于Percent
被声明为double
,因此只要用户输入非数字数据,cin >> Percent
就会失败。您可以使用cin.fail()
std::cin >> Percent;
while (std::cin.fail()) {
std::cin.clear();
std::cin.ignore(std::max<std::streamsize>());
std::cout << "Please enter a valid number." << std::endl;
std::cin >> Percent;
}