首页 > 解决方案 > 如何检查用户输入是 1 还是 2

问题描述

我试图让用户输入一个代表难度的数字,但是当我使用该if语句检查难度是否为 1 时,if尽管我输入了1.

与问题的答案相同。

例如,当我运行代码并要求我输入难度并且我输入 2 或 1000 时,它仍然会继续执行代码。you got it correct即使我为第一个错误的问题输入 1945,它也会显示相同的答案。

任何帮助是极大的赞赏!

代码:

int difficulty;
cout << "Please choose a difficulty: 1 for easy 2 for medium 3 for hard: ";
cin >> difficulty;

if (difficulty = '1')
{
    ifstream file_("questions.txt");
    if (file_.is_open())
    {
        std::getline(file_, ques1);
        cout << ques1 << std::endl;
        int answr1;
        cout << "Enter 1 for: 1945, Enter 2 for: 1914 \n";
        cin >> answr1;
        if (answr1 = '1914')
        {
            cout << "Well done you got it correct! \n";
        }
        else {
            cout << "Incorrect answer was 1914! \n";
        }

        std::getline(file_, ques2);
        cout << ques2 << std::endl;
        int answr2;
        cout << "Enter 1 for: 1937, Enter 2 for: 1939 \n";
        cin >> answr2;
        if (answr2 = '1939')
        {
            cout << "Well done you got it correct! \n";

        }
        else {
            cout << "The answer was 1939 \n";
        }

        std::getline(file_, ques3);
        cout << ques3 << std::endl;
        int answr3;
        cout << "Enter 1 for: George Bush, Enter 2 for: George Washington \n";
        cin >> answr3;
        if (answr3 = '2')
        {
            cout << "Well done you got it correct! \n";
        }
        else {
            cout << "It was George Washington \n";
        }

        std::getline(file_, ques4);
        cout << ques4 << std::endl;
        int answr4;
        cout << "Enter 1 for: 14, Enter 2 for: 11 \n";
        cin >> answr4;
        if (answr3 = '11')
        {
            cout << "Well done you got it correct! \n";
        }
        else {
            cout << "It was 11 \n";
        }

        std::getline(file_, ques5);
        cout << ques5 << std::endl;
        int answr5;
        cout << "Enter 1 for: She was born with 6 figners , Enter 2 for: 6 toes \n";
        cin >> answr5;
        if (answr3 =' 2')
        {
            cout << "Well done you got it correct! \n";
        }
        else {
            cout << "It was 6 Toes \n";
        }

        file_.close();
    }
    else {
        cout << "File is not open\n";
    }

}

标签: c++if-statement

解决方案


您的 if 语句在这里存在逻辑缺陷。您希望用户在两个选项之间进行选择,因此如果他们选择 1 或 2 以外的任何选项,请给他们一个提示并期待这两个答案之一。请参见下面的示例:

 if (answr1 == "1914")
        {
            cout << "Well done you got it correct! \n";
        }
        else if(answr1 == '1945') {
            cout << "Incorrect answer was 1914! \n";
        }
        else {
            cout << "Incorrect Input!Plese input 1 or 2 \n";
        }

PS:在 C++=中,运算符用于赋值。用于==比较


推荐阅读