繁体   English   中英

在while循环中输入特定字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM