C#代码即使在未分配变量时也会执行

C#代码即使在未分配变量时也会执行,c#,var,C#,Var,正如您可能从我的问题中看到的,我对编码非常陌生。我正在试着做一个计算器来计算一些在物理学中使用的公式。但是,至少在本例中,代码会在用户有时间输入a的值之前运行公式。以下是一个例子: case "f = ma": Console.WriteLine("Type the value for M in KG:"); var FM = Console.Read(); Console.WriteLine("Type the value for A in M/S:"); va

正如您可能从我的问题中看到的,我对编码非常陌生。我正在试着做一个计算器来计算一些在物理学中使用的公式。但是,至少在本例中,代码会在用户有时间输入a的值之前运行公式。以下是一个例子:

case "f = ma":
    Console.WriteLine("Type the value for M in KG:");
    var FM = Console.Read();
    Console.WriteLine("Type the value for A in M/S:");
    var FA = Console.Read();
    var FMARes = FM * FA;
    Console.WriteLine("Your answer (in Newtowns) is " + FMARes);
break;

如何检查变量a是否已赋值,并且仅在变量赋值后运行公式?谢谢。

您需要使用ReadLine而不是Read。您还需要在底部执行另一个ReadLine,以便用户可以看到结果。而且…您应该验证用户输入的数字是否有效。这可以重构一点,以避免重复的代码-等等-但看看这是否适合你!祝你好运

    static void Main(string[] args)
    {
        double fm;
        double fa;

        // Use ReadLine instead of Read 
        Console.WriteLine("Type the value for M in KG:");
        var input = Console.ReadLine();

        // Now you need to cast it to a double - 
        // -- but only if the user entered a valid number 
        if (!double.TryParse(input, out fm))
        {
            Console.WriteLine("Please enter a valid number for M");
            Console.ReadLine(); 
            return; 
        }

        Console.WriteLine("Type the value for A in M/S:");
        input = Console.ReadLine();
        if (!double.TryParse(input, out fa))
        {
            Console.WriteLine("Please enter a valid number for A");
            Console.ReadLine();
            return; 
        }

        // Now we have valid values for fa and fm 
        // It's a better programming practice to use the string format 
        // intead of + here... 
        Console.WriteLine($"Your answer (in Newtowns) is {fm * fa}");

        // You need another read here or the program will just exit
        Console.WriteLine("Press Enter to end the program");
        Console.ReadLine(); 
    }