[英]Entering specific character into while loop
我正在为班级编写代码,要求用户输入大小等于或大于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;
}
因为您正在为int变量获取char
错误:
int s, l;
正确对象,真爱:
int s;
char l;
为什么它会在一秒钟内无限循环
无限循环的解释
这就是basic_istream的工作方式。 在cin >> l输入错误的情况下-设置了故障位并且未清除cin。 所以下一次它将是相同的错误输入。 要正确处理此问题,您可以添加检查输入是否正确,并在输入错误的情况下清除并忽略cin。
从这里合并
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.