我正在为类编写一个代码,要求用户输入一个奇数等于或大于7
的大小。我已经能够使我的代码部分成功运行。但是,下一部分包括要求用户输入特定的字母,在本例中为'c'
。如果他们没有输入'c'
,那么循环应该让他们输入另一个字符。每当我运行此代码时,无论是输入'c'
还是其他字母,它都会创建一个无限循环。我认为我在第二个while
循环中的表达方式不正确,但我无法找到有关此问题的大量信息,可以帮助我。
#include <iostream>
using namespace std;
int main() {
int s, l;
cout << "Welcome to the letter printer." << endl;
cout << "Enter the size: " << endl;
cin >> s;
while (s < 7 || s%2==0 || s<0)
{
cout << "Invalid size. Enter the size again: " << endl;
cin >> s;
}
cout << "Enter the letter: " << endl;
cin >> l;
while (l != 'c')
{
cout << "Invalid letter. Enter the letter again: " << endl;
cin >> l;
}
return 0;
}
答案 0 :(得分:0)
因为你正在为int变量获取char
错误:
int s, l;
正确的一个:
int s;
char l;
这是为什么它在第二次进行无限循环时
无限循环的解释
这就是basic_istream的工作原理。在您的情况下,当cin&gt;&gt;我得到了 输入错误 - 设置failbit并且不清除cin。所以下次呢 将是相同的错误输入。要正确处理此问题,您可以添加 检查输入是否正确,如果输入错误,请清除&忽略cin。
来自here