好的,所以这是我程序的一部分,从根本上讲,这是向用户重复出现的错误消息,直到输入有效的输入为止。因此,基本上,我面临的问题是,每当我输入无效的数字(例如0、12或负数)时,都不会输出任何内容,程序将等待另一个输入,然后才将输入标识为错误或有效输入。输入符号或字母时,这不是问题。我可以使用任何解决方法吗?
while (Choice1 < 1 || Choice1 > 11)
{
if(!(cin >> Choice1), Choice1 < 1 || Choice1 > 11)
{
cin.clear();
cin.ignore(512, '\n');
cout << "\n\aError! Please enter a valid input!" << endl;
cout << "Now please enter the first code: ";
cin >> Choice1;
}
}
答案 0 :(得分:1)
也许这就是您想要的:
#include <iostream>
#include <limits>
int main()
{
int Choice1{0};
while (!(std::cin >> Choice1) || Choice1 < 1 || Choice1 > 11)
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "Error! Please enter a valid input!" << std::endl;
std::cout << "Now please enter the first code: " << std::endl;
}
return 0;
}
您可以阅读here和/或here有关逗号运算符的信息,但我发现它不是条件表达式的一部分 em>。另外,我不认为您真的希望if
限定 while
循环。我进行了一些其他小的更改,保留了大多数原始结构-仍然可以使用一些工作。