c++ - 使用 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 之间的数字,但它一直在循环......我找不到问题出在哪里。任何帮助将不胜感激!
解决方案
第一个错误是您在实际获得输入之前正在测试输入的值。这没有意义,您需要切换顺序。所以这
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)
.
推荐阅读
- r - 在按年份分组行和区分月份时需要帮助
- blazor - 无法在 Blazor 中使用 e.Value = "value" 设置输入值
- ios - 如何将按钮添加到导航栏
- scala - 类型类泛型中的类型类约束
- hangfire - 多个hangfire仪表板并同时在同一台服务器上处理
- mysql - 根据动态日期范围查询帖子元值
- python - {discord.py-rewrite} 编写用户名和数字的排行榜
- c++ - 使用 BFS 解决 3D 迷宫问题。如果在 C++ 中找到,如何获得到终点的完整最短路径?
- android - webview 可以启动一个活动 onReceivedError 吗?
- twilio - Twilio 的 Lookup API 能否判断一个号码是否已连接?