下面有这个,但是如果我输入一个字母,我会得到一个无限循环。
怎样才能使它只接受0到1的数字,而不接受字母或其他字符。它应该接受0.1至0.5之间的数字
int alphaval = -1;
cout << "Enter a number between 0 and 1: ";
cin >> alphaval;
while (alphaval < 0 || alphaval > 1)
{
cout << "Invalid entry! Please enter a valid value: ";
cin >> alphaval;
}发布于 2014-04-24 05:33:45
注意,如果输入意外类型的值(例如,在int时需要字符串),则std::cin将处于糟糕的状态。如果流处于无效状态,那么它将无法读取甚至有效的输入,并且循环将无限地运行。这似乎是您的情况,所以您需要清除流和,因为流没有无效的输入,所以需要跳过它(使用ignore函数):
double alphaval; //it must be double or float (as per your requirement)
cin >> alphaval;
while (alphaval < 0 || alphaval > 1)
{
cout << "Invalid entry! Please enter a valid value: ";
//FIX
cin.clear(); //clear bad flags!
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //skip bad input
cin >> alphaval; //read fresh!
}包含用于<limits>的std::numeric_limits<>头文件。
发布于 2014-04-24 05:34:57
将字母定义为浮动或双
double alphaval = 0.0;
// YOUR CODE
cout << "Enter a number between 0 and 1";发布于 2014-04-24 06:04:39
试试这个:
double alphaval = -1;
cout << "Enter a number between 0 and 1: ";
cin >> alphaval;
while (true)
{
if(alphaval >= 0 && alphaval <= 1)
{
break;
}
else
{
cout << "Invalid entry! Please enter a valid value: ";
cin >> alphaval;
}
}https://stackoverflow.com/questions/23260523
复制相似问题