这可能仅需要基本的问题解决技能,但是我试图创建一种非常简短的方法:要求用户提供输入,并且仅在输入至少通过一次条件检查后才说输入不合法。 do while循环似乎很合适。
我在下面的实现方式始终会产生一个问题,即1个特定的数字会产生一个错误,即如果用户输入0却没有收到应有的消息,我可以将其更改为一个非常特殊的数字,但仍然可以最终的错误仍然存在。我来自Java背景,其中null是使此操作变得容易的默认值,但是由于效率原因,在c++中似乎并非如此。我可以声明一个bool
,但这似乎是一种过多的解决方法。
这是我现在拥有的代码:
int birthYear = 0;
do {
if (birthYear != 0) cout << "Your input " << birthYear << " is not a legit birthday";
cout << "What is the year you were born?: "; cin >> birthYear;
} while (birthYear < 1900 || birthYear > 2100);
最佳答案
这是一个经典示例,其中while
循环和do
/ while
循环都不是完全合适的,因为您需要在检查循环条件之前和之后进行一些操作。
用中间的break
将循环重写为“永久”循环:
for (;;) {
cout << "What is the year you were born?: ";
cin >> birthYear;
if (birthYear >= 1900 && birthYear <= 2100) {
break;
}
cout << "Your input " << birthYear << " is not a legit birthday";
}