Это часть моего входного значения, что я хочу сделать, это только ввести 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];
}
Попробуй это:
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];
}
Исправьте поток кода, не все пути поддерживаются.
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];
}