这是我输入值的一部分,我想要做的只是输入0-9但是当我输入一个字母或任何无效的键时,他们的程序工作正常,要求重新输入。
无效输入请重新输入:
然而这次我重新进入它 打印出来:[6.95324e-310 2 3 4 5]
这是代码:
int main()
{
int aSize=5;
double aArray[aSize];
double value;
for(int i=0;i<aSize;i++)
{
cout<<"enter value of slot"<<i+1<<": ";
cin>>value;
if(cin.fail())
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout<<"invalid input please re-enter: ";
cin>>value;
}
else
{
aArray[i] = value;
cout<<"value of aArray: "<<aArray[i];
}
答案 0 :(得分:1)
试试这个:
for (int i = 0; i < aSize; i++)
{
cout << "enter value of slot" << i + 1 << ": ";
cin >> value;
while (cin.fail())
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "invalid input please re-enter: ";
cin >> value;
}
aArray[i] = value;
cout << "value of aArray: " << aArray[i];
}
答案 1 :(得分:0)
修复代码流,并非所有路径都受支持。
int main() {
int aSize=5;
double aArray[aSize];
double value;
for(int i=0;i<aSize;i++) {
cout<<"enter value of slot"<<i+1<<": ";
cin>>value;
// repeat handling of failure
while (cin.fail()) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout<<"invalid input please re-enter: ";
// at this point we want to get back to fail
cin>>value;
}
aArray[i] = value;
cout<<"value of aArray: "<<aArray[i];
}