int main()
{
int in;
cout << "please enter a number between 1 and 70" << endl;
cin >> in;
string star = "*";
const int lessthan = in < 1;
const int greaterthan = in > 70;
while (true) {
if (lessthan || greaterthan) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "please enter a number between 1 and 70" << endl;
}
else {
for (int looptimes = 0; looptimes <=in ; ++looptimes ) {
cout.width(looptimes);
cout << star << endl;
break;
}
}
}
}
基本上我只想弄清楚如何在输入正确时结束循环。此外,我希望能够在输入正确后停止询问。
答案 0 :(得分:0)
在进入逻辑之前,让我们谈谈变量的编码风格和用法。你根本不需要大部分。
基本上我只是想弄清楚如何在输入正确时结束循环
从您的代码判断,我假设正确 intput由一个范围为1 >= x >= 70
的整数组成。这是一个可以用作while()
循环条件的可靠语句。
int some_number = 0;
do{
std::cout << "Please enter a number between 1 and 70: ";
std::cin >> some_number;
while(some_number < 1 && some_number > 70);
在这个(更简单的)代码片段中,您可以看到,只要输入的数字是有效整数且超出所需范围,我们就会要求输入。
如果您希望用户可以输入除整数之外的其他内容(例如,而不是232
,则用户可能会输入some text
),您可能希望使用其他解决方案。
std::string line;
int some_number = 0;
do{
std::cout << "Please enter a number between 1 and 70: ";
std::getline(std::cin, line);
try{
some_number = std::stoi(line);
} catch (...){
some_number = 0;
}
} while(some_number < 1 && some_number > 70);
这将继续要求所需范围内的整数,即使用户输入的内容无效(此处 - 不是数字)。我们简单地扫描输入并将其放入std::string
。然后我们将该字符串解析为int
。如果我们成功,则将返回值分配给我们的变量。如果我们不这样做(在输入无效的情况下)抛出并捕获将some_number
设置为0
的异常,则再次执行do-while
循环。