我正在创建一个简单的控制台应用程序,该应用程序获取的用户输入是整数。
我想要这样一个条件,即它只能是整数,并且不应大于3且不小于0。
我到目前为止提出的代码是:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
int uinval;
while (true) {
string tempoval;
cout << "Please enter a value between 0-3:\n>";
cin >> tempoval;
stringstream ss(tempoval);
if (ss >> uinval)
{
break;
cout << "Entered an invalid value";
}
while (true)
{
if (uinval < 0 || uinval > 3)
break;
cout << "Value must be between 0-3";
}
cout << "You have entered:" << uinval;
return 0;
}
当我输入a,b,c,d之类的非整数值时,此方法有效。但是当我输入-1或4作为值时,它不起作用。
我不确定,也许我把while循环弄糊涂了。
最佳答案
这是不正确的:
while(true){
if(uinval < 0 || uinval > 3)
break;
cout <<"Value must be between 0-3";
}
您反复检查
uinval
上的条件,而没有给用户输入新值的机会。要解决此问题,请删除第二个循环,然后更换
if(ss >> uinval) {
break;
}
在第一个循环内
if(ss >> uinval && uinval >= 0 && uinval < 4) {
break;
}
关于c++ - 出现错误时返回第一条指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16544596/