我在下面有这个,但如果我输入一个字母,我会得到一个无限循环。
制作它的正确方法是什么,它只接受数字0到1,没有字母或其他字符。它应该接受0.1 x 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;
}
答案 0 :(得分:8)
请注意,如果输入意外类型的值(例如,当期望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>
的{{1}}标头文件。
答案 1 :(得分:1)
将alphaval定义为float或double
double alphaval = 0.0;
// YOUR CODE
cout << "Enter a number between 0 and 1";
答案 2 :(得分:1)
试试这个:
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;
}
}