【问题标题】:Basic C# calculator exercise - "Use of unassigned local variable" error基本 C# 计算器练习 - “使用未分配的局部变量”错误
【发布时间】:2016-08-14 14:15:38
【问题描述】:

我正在用一个非常基本的计算器脚本练习 switch 语句,但我很困惑为什么我写出浮点变量 result 的最后一行收到错误:“使用未分配的局部变量”。是的,有很多更好的方法可以制作一个涉及循环的计算器,接下来我想尝试一下,但现在它是 C# 的小步骤。下面是我的代码,谢谢大家!

namespace Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            // Greeting.

            Console.WriteLine ("Welcome to the basic calculator");

            // Get first value.

            Console.WriteLine ("Enter the first value.");
            string firstValueAsText = Console.ReadLine ();
            float a = Convert.ToSingle (firstValueAsText);

            // Get second value.

            Console.WriteLine ("Enter the second value.");
            string secondValueAsText = Console.ReadLine ();
            float b = Convert.ToSingle (secondValueAsText);

            // Prompt operation.

            Console.WriteLine ("Enter '+', '-', '*', '/', '^'.");
            string operation = Console.ReadLine ();

            // Establishing the result and error variables for later.

            float result;
            string error = "ERROR";

            // Define switch operations.

            switch (operation)
            {
                case "+":
                    result = a + b;
                    break;
                case "-":
                    result = a - b;
                    break;
                case "*":
                    result = a * b;
                    break;
                case "/":
                    result = a / b;
                    break;
                case "^":
                    result = (float)Math.Pow(a, b);
                    break;
                default:
                    Console.WriteLine (error);
                    break;
            }

            // Print the result.

            Console.WriteLine (a + " " + operation + " " + b + " = " + result);
            Console.ReadKey ();
        }
    }
}

【问题讨论】:

  • 看看如果用户输入了一个无效的操作会发生什么。

标签: c# .net asp.net-mvc


【解决方案1】:

如果用户输入无效操作,它将进入default: 流。在这种情况下,result 将永远不会被分配。

您可以通过以下方式解决此问题:

float result = 0;

或:

default:
    Console.WriteLine (error);
    result = 0;
    break;

【讨论】:

    【解决方案2】:

    您没有初始化变量result,并且它没有分配到所有执行路径上。您可以通过在声明时对其进行初始化来克服此编译器错误:

    float result = 0; 
    

    ...或者通过将其设置在开关的default 路径中:

    default:
        result = 0;
        Console.WriteLine(error);
        break;
    

    【讨论】:

    • 谢谢 Shlomo -- 说得通。
    【解决方案3】:

    如果用户输入了一些不寻常的东西,那么它会变成default 的情况,所以你可以通过类似的方式来处理这个问题

    default:
      {
        Console.WriteLine (error);
        result = 0;
        break;
      }
    

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多