我正在制作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之间的数字,但是它一直循环播放……我找不到问题出在哪里。任何帮助将不胜感激!
第一个错误是您在实际获得输入之前正在测试输入的值。那没有意义,您需要切换顺序。所以这
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
,在循环的末尾是不必要的,循环会自动继续。
最后pt1[i]
比容易阅读得多*(pt1+i)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句