如何让用户输入正双精度变量
How to make the user enter a positive double variable?
我希望用户输入一个正双精度变量。如果他们输入其他任何内容,我希望程序循环并继续要求他们输入一个数字,而不是收到错误并关闭。我用条件语句和中断做了一个无限循环。出于某种原因,如果他们输入正数以外的内容,它会无限要求半径。有人可以帮助我吗?
for(;;) {
cout << "Radius: ";
cin >> radius;
if(radius > 0){
break;
}
}
您可以简单地检查cin
的流状态:
double radius;
for(;;) {
cout<<"Radius: ";
if(!(cin>>radius) || radius < 0.0) {
cout << "Invalid input, please enter a positive double value." << endl;
cin.clear();
std::string dummy;
cin >> dummy; // Read the left invalid input
}
else {
break;
}
}
您需要清除流的错误标志,否则会继续循环,因为当流处于错误状态时不会再执行其他读取,并且radius
在循环之前保留其值。您需要执行以下操作(必须#include <limits>
):
if(!(cin >> radius)) // we didn't read a number, cin has a "bad" state
{
cin.clear(); // clear the error flags
cin.ignore(numeric_limits<streamsize>::max(), 'n'); // ignore the rest
continue;
}
相关文章:
- 在 C++ 中将双精度变量写入二进制文件
- 将双精度变量设置为另一个变量的值
- 将双精度值转换为 char 变量时字符串流如何工作
- 从二进制流中读取时,将双精度变量的地址转换为 char* 意味着什么?
- 警告:左移计数 >= 在 C++ 中将字节流读取为双精度变量时的类型宽度
- 为什么双精度引用值在分配给C++中的浮点变量时不会更改
- 使用词法强制转换在'string to double'中设置双精度变量的精度
- 整数和双精度变量的初始化
- 将 Int 指针分配给双精度变量
- 如何在 for 循环内部或外部打印双精度变量
- 通过更改代码格式来计算结构向量中包含的双精度变量的平均值的不同结果?
- 如何让用户输入正双精度变量
- 小数点后的数字,用于双精度变量/C++计算
- 对应该返回的双精度变量进行舍入,而不是打印
- 删除双精度变量中的尾随零
- 我可以控制调试器窗口中显示的浮点数和双精度变量的位数吗?
- 使用 cv::fileStorage 保存双精度变量
- 将长双精度对象存储在多个双精度变量中
- vc.net:无法设置双精度变量的值
- 如何使两个不同长度的双精度变量相等