向量的输入验证C++

Input Validation for Vectors C++

本文关键字:C++ 验证 输入 向量      更新时间:2023-10-16

我的do-while循环的输入验证有问题。我的 do-while 循环只验证所有其他输入

下面是一个示例:

Please Enter Grade 1: 101 (It does not accept input) 
Invalid Rage. Please Enter Range 0-100.
Please Enter Grade 1: 101 (It accapts this input)
Please Enter Grade 2: 101 (It does not accept input) 
Invalid Rage. Please Enter Range 0-100.
Please Enter Grade 2: 101 (It accapts this input)

这是我的代码:

for(vector<double>::size_type i = 0; i < 15; i++)
  {
    do
    {
         cout << "Please Enter Grade "<< i + 1 <<": " << flush;
            cin >> gradesVector[i];
        }
        while(gradesVector[i] < 0.0 && gradesVector[i] > 100.0);
        { 
            cout << "Invalid Rage. Please Enter Range 0-100:n";
                cout << "Please Enter Grade "<< i + 1 <<": " << flush;
                    cin >> gradesVector[i];
         }   
}

试试这个:

int main() {
   vector<double> gradesVector(15);
   for(vector<double>::size_type i = 0; i < 15; i++) {
       do {
            cout << "Please Enter Grade "<< i + 1 <<": " << flush;
            cin >> gradesVector[i];
       } while(gradesVector[i] < 0.0 || gradesVector[i] > 100.0);
   }
}
语句

while(gradesVector > 0.0 && gradesVector <= 100.0)试图检查整个向量是大于 0 还是小于 100,这实际上没有意义。 你想做类似while(gradesVector[i] > 0.0 && gradesVector[i] <= 100.0)的事情(只要确保i在正确的范围内(。

编辑:只需摆脱do-while循环,只使用for循环。 在 for 循环中,添加一个 if 语句:if(gradesVector[i] > 0.0 && gradesVector[i] <= 100.0) 。 如果验证失败,请使用 break 语句退出 for 循环。