首页 > 解决方案 > 使用 Do While 循环创建数组(输入验证)

问题描述

我正在制作一个 C++ 代码,您将在其中使用 do-while 循环创建一个数组。这是完整的代码:

const int size = 10;

    
    double *pt1; 
    //executable
    pt1=new double[size];


    int i = 0;
    do{
        cout <<"mile" << "[" << i << "]" << setw(3);
        if(*(pt1+i) >= 100 && *(pt1+i) <= 250)
        {
            cin >> *(pt1+i);
            i++;
        }   
        else if( *(pt1+i) > 100 && *(pt1+i) < 250)
        {
           cout << "100-250 only";
            continue;
        }
    }while(i < 10);

有一个输入验证,其中将接受的数字仅为 100-250 之间的数字,但它一直在循环......我找不到问题出在哪里。任何帮助将不胜感激!

标签: c++c++11

解决方案


第一个错误是您在实际获得输入之前正在测试输入的值。这没有意义,您需要切换顺序。所以这

    if(*(pt1+i) >= 100 && *(pt1+i) <= 250)
    {
        cin >> *(pt1+i);
        ...
    }   
    else if( *(pt1+i) > 100 && *(pt1+i) < 250)
    {
        ...
    }

应该是这个

    cin >> *(pt1+i);
    if(*(pt1+i) >= 100 && *(pt1+i) <= 250)
    {
        ...
    }   
    else if( *(pt1+i) > 100 && *(pt1+i) < 250)
    {
        ...
    }

其次,我认为你的意思是

else if( *(pt1+i) < 100 || *(pt1+i) > 250)

或者更好的是你可以说

else

那么就没有机会弄错逻辑了。当您只有两个选择时,您只需要测试第一个选择并使用else第二个选择。没有必要测试与第一选择相反的情况,使用平原else会自动完成。

同样continue,在循环结束时,循环会自动继续。

finallypt1[i]*(pt1+i).


推荐阅读