在while循环中输入特定字符

时间:2018-02-16 16:48:45

标签: c++

我正在为类编写一个代码,要求用户输入一个奇数等于或大于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;
}

1 个答案:

答案 0 :(得分:0)

因为你正在为int变量获取char

错误:

int s, l;

正确的一个:

int s;
char l;

这是为什么它在第二次进行无限循环时

无限循环的解释

  

这就是basic_istream的工作原理。在您的情况下,当cin&gt;&gt;我得到了   输入错误 - 设置failbit并且不清除cin。所以下次呢   将是相同的错误输入。要正确处理此问题,您可以添加   检查输入是否正确,如果输入错误,请清除&忽略cin。

来自here