#include <iostream>
using namespace std;
int main()
{
double fish[5] = {};
int i = 0;
for (; i < 5; i++)
{
while (!(cin >> fish[i]))//先执行输入赋值操作,如果输入的是数字,则会返回true,并进行下一次的判断(还是以输入赋值开始);是数字就会返回false,并进入循环。
{
cin.clear();//如果输入的不是数字,就会进入错误状态,需要先清除错误状态
while (cin.get() != '\n')
{
continue;//这一部分会会忽略接下来输入的内容,直到回车
}
cout << "请输入数字";
}
}
cout << "鱼的平均质量为:";
float sum = 0;
i--;
for (; i >= 0; i--)
{
sum += fish[i];
}
cout << (sum / 5.0);
}
在c++中,当使用std::cin
进行输入操作时,如果输入的数据格式与规定的不符,则会进入错误状态,拒绝再次读入数据。
- 可以使用
std::cin.fail()
来检测当前是否处于错误状态,如果当前处于错误状态,则返回true
。还有一种方法,就是直接使用cin
,如果当前不能再次输入(可能是处于错误状态,也可能是因为磁盘错误等其他原因),则会返回false
。 - 如果当前处于错误状态,则不能再输入,可以使用
std::cin.clear
来清除错误状态。