在C ++中处理无效的用户输入

时间:2019-01-29 23:36:43

标签: c++ loops variables input

我已经用C ++进行编码了整整几天,所以请像我小时候一样跟我说话。有了这种方式,

我制定了一个简短的算法,询问一组问题(要回答0表示否,回答1表示是)并将用户的答案存储为整数。只要用户仅输入整数(或者在一种情况下为无空格的字符串),一切都会按预期进行。

但是,如果输入与变量类型不匹配,则程序会立即输出此无限循环,该无限循环将在程序稍后出现。该循环应该打印一个问题,等待输入,然后再次询问答案是否不是“ 1”,但是在失败状态下,它只会打印问题而没有结束。我看不出任何先前的问题与之相关的原因。如果这是一个线索,它不会在随后的问题上发生。

这是我的代码的精简版,希望所有重要信息完整无缺:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int answer1;
    string answer1C;
    int answer2;
    int answer2B;
    int score;
    score = 0;

    cout << "Question 1" << endl;
    cin >> answer1;
    if (answer1 == 1)
    {
        ++score;
        //some other questions go here
        cout << "Question 1C" << endl;
        cin >> answer1C;
        if (answer1C.size() == 6)
        {
            ++score;
        }
    }

    cout << "Question 2" << endl;
    cin >> answer2;
    if (answer2 == 0)
    {
        cout << "Question 2B" << endl;
        cin >> answer2B;
        if (answer2B == 0)
        {
            --score;
        }
        while (answer2B != 1) //Here is the infinite loop.
        {
            cout << "Question 2B" << endl;
            cin >> answer2B;
        }
    }

    cout << "Question 3" << endl;
    //and so on

    return 0;
}

我希望它接受 any 输入,并且仅在碰巧符合指定条件时才执行后续步骤:例如,在问题1.2中,它仅 如果答案是长度为6的字符串,则奖励一个分数,否则不做任何事;或问题2.1,它对不是'1'的任何输入重复该问题,然后继续输入。

但是无论如何,我都需要它在失败时做其他事情。请帮助我弄清楚为什么会这样。谢谢。

0 个答案:

没有答案