C++ 向量C+的输入验证+;

C++ 向量C+的输入验证+;,c++,validation,vector,C++,Validation,Vector,我的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)

我的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];
         }   
}
(向量::大小\类型i=0;i<15;i++)的

{
做
{

当(gradesVector>0.0和&gradesVector尝试以下操作时,不能执行语句:

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);
   }
}
intmain(){
向量分级向量机(15);
对于(向量::大小\类型i=0;i<15;i++){
做{

为什么我有两个循环?我现在是个新的C++,现在我看到了错误的方法。有很多方法可以做。我提供了一个解决方案,它的核心没有改变你第一个方法的本质,这不是坏的。不要对自己太苛刻。C++,编程,任何事情都只是实践和实践。你越是如此。这样做,你的进步就越大。因此,如果你现在明白了这一点,请冷静并高兴。如果你添加了错误的值,你的新方法将终止你的程序。这是你真正想要的吗?应该是gradesVector[i]而您的for循环需要大括号…我更新了问题以准确显示我正在尝试做的事情我仍然得到相同的错误'main.cpp:36:24:error:while(gradesVector[i]>0.0&&gradesVector[i]0.0&&gradesVector[i]使用未声明的标识符'i'您得到该错误是因为while循环条件在for循环之外。另外,@user5426461634646244是正确的,您不需要两个循环。我将更新我的答案。@Zexus它仍然允许输入小于0.0的数字和大于100.0的数字。当我运行代码时,我没有收到编译器错误,但现在没有输出它没有w、 这就是do while现在派上用场的地方!你的
do..while
条件是错误的(当然,OP也有这个错误)。它将在有效而不是无效的情况下继续请求分数。让我为你解决这个问题:-)好的,代码现在正在运行,但是仍然没有输入验证。我输入了-1、120和“A”来检查它是否会接受它,并且did@Tayvion,此代码将不会捕获无效的duuble(如
A
),这将需要您检查实际的
cin>>blah
位(可能是
cin.ignore
到行尾)。它将捕获超出范围的有效双打。