为什么Visual C#上的if语句没有被正确评估?

时间:2016-07-15 21:01:52

标签: c#

我正在尝试使用Visual C#在Visual Studio 2015社区中创建Times Table控制台应用程序,但if语句未正确评估。 我开始调试(测试)我的控制台应用程序,但在最后三个问题中没有正确评估if语句。有人可以帮忙吗?这是我的代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace xTables
    {
        class Program
        {
            static void Main(string[] args)
            {
                  Console.WriteLine("Welcome to xTables");
        Console.WriteLine("In this application, you'll have to answer questions from");
        Console.WriteLine("the times table up to 12");
        Console.WriteLine("Good Luck!");
        //Question 1
        Console.WriteLine("What is 1 x 6");
        string userAnswer = Console.ReadLine();


        if (userAnswer == "6")
        {
            string message = "Correct";
            Console.WriteLine(message);
        }

        else
        {
            string message = "Incorrect";
            Console.WriteLine(message);
        }



        //Question 2
        Console.WriteLine("What is 2 x 3");
        Console.ReadLine();

        if (userAnswer == "6")
        {
            string message = "Correct";
            Console.WriteLine(message);
        }

        else
        {
            string message = "Incorrect";
            Console.WriteLine(message);
        }



        //Question 3
        Console.WriteLine("What is 8 x 9");
        Console.ReadLine();

        if (userAnswer == "72")
        {
            string message = "Correct";
            Console.WriteLine(message);
        }

        else
        {
            string message = "Incorrect";
            Console.WriteLine(message);
        }


        //Question 4
        Console.WriteLine("What is 5 x 6");
        Console.ReadLine();

        if (userAnswer == "30")
        {
            string message = "Correct";
            Console.WriteLine(message);
        }

        else
        {
            string message = "Incorrect";
            Console.WriteLine(message);
        }

        //Question 5
        Console.WriteLine("What is 4 x 6");
        Console.ReadLine();

        if (userAnswer == "24")
        {
            string message = "Correct";
            Console.WriteLine(message);
        }

        else
        {
            string message = "Incorrect";
            Console.WriteLine(message);
        }


    }
}

}

6 个答案:

答案 0 :(得分:3)

除了第一个问题之外,你有这个:

Console.ReadLine();

当你可能想要这个时:

userAnswer = Console.ReadLine();

编辑以获得进一步说明

因为第二个问题的答案与第一个问题的答案相同,所以它似乎有效。 (你可能两次输入相同的答案。)但实际上,不仅仅是最后三个问题没有起作用;只有第一个问题才是实际做你想做的事。

答案 1 :(得分:1)

在最后三个你需要做的事情:

userAnswer = Console.ReadLine();

而不仅仅是Console.ReadLine();

答案 2 :(得分:0)

除了上面提到的答案之外,你真的不需要对消息变量使用抽象方法。

 Console.WriteLine("Correct") 

也可以正常工作

答案 3 :(得分:0)

您需要使用Console.ReadLine()的返回值。

userAnswer = Console.ReadLine();

作为旁注,这是方法的绝佳选择:

HandleQuestion(1, 6);
HandleQuestion(2, 3);
HandleQuestion(8, 9);
HandleQuestion(5, 6);
HandleQuestion(4, 6);

void HandleQuestion(int operand1, int operand2)
{
    Console.WriteLine("What is {0} x {1}", operand1, operand2);
    string userAnswer = Console.ReadLine();

    if (userAnswer == (operand1 * operand2).ToString())
        Console.WriteLine("Correct");
    else
        Console.WriteLine("Incorrect");

}

完成上述操作后,您可以使用操作数的随机值生成问题。

答案 4 :(得分:0)

您没有将readline()返回到变量中。 猜猜你想做:userAnswer = Console.ReadLine();

答案 5 :(得分:-1)

我认为您应该使用以下内容:

if (userAnswer.Equals(6)){
 // Rest of the code

 }