【发布时间】:2020-11-17 03:32:46
【问题描述】:
在我的 c++ 代码中,我想使用 do while 循环验证我的用户输入是否为 1,10 之间的 int。我能够验证范围之外的整数。但是,如果用户输入一个浮点数或一个字母,它就会变成一个无限循环。我的想法是在我的 while 循环中添加一个条件,如果输入不是整数以继续要求输入。 大写字母是我遇到麻烦的地方。
#include <iostream>
using namespace std;
int main(){
cout << "Welcome, ";
int steps;
int count=0;
do{
cout << "How many? \n";
cin >> steps;
IF (STEPS IS NOT INTEGER==TRUE){
COUNT=1;
}
if (steps <1)
{
cout << "not enough...\n";
}
if (steps > 10){
cout << "too many steps.\n Please pick a lower number of steps.\n\n";
}
} while (steps < 1|| steps >10 || COUNT==1);
//doing stuff with valid input
return 0;
}
基本上我正在尝试添加另一个仅返回布尔值的条件。如果布尔值暗示输入无效,那么它会重新分配 count 以确保 do while 循环继续进行,直到输入有效为止。
我正在处理的问题要求最大和最小步骤,因为他们都有类似的问题,我试图简化它并忘记了一些编辑。
【问题讨论】:
-
您声明
steps是一个整数,除此之外它不能是其他任何东西。如果您想确保用户在控制台中输入了一个数字,那么您需要使用字符串并对其进行解析以查看它是否符合预期的格式。 -
stackoverflow.com/questions/1283302/… 查看此问题的最佳答案。您不一定需要进行解析以确保您有一个整数。
-
cin >> steps;正在读入integer 变量。根据定义,结果将是int.. -
@MPops 这样的解决方案的问题是它们不能保持流的清洁。如果我输入
1a,1将存储在steps中,a将留在流中以与下一个输入混淆。 -
认为
steps被声明为int,它永远不会收到非int的值!
标签: c++ if-statement while-loop do-while