我正在尝试制作一个计算器,但我不断得到CS0165,我对为什么感到困惑

时间:2019-09-25 20:37:02

标签: c#

Console.Writeline(result);最后返回错误CS0165 Use of unassigned local variable 'result',但我不知道为什么。我是一个完整的初学者,不胜感激。就像我在标题中说的那样,我正在尝试构建一个计算器。

char Operator;
double firstNumber;
double secondNumber;

    Console.WriteLine("Enter the first number");
    string firstNumberAsText = Console.ReadLine();

    Console.WriteLine("Enter the second number");
    string secondNumberAsText = Console.ReadLine();

    Console.WriteLine(@"Enter a math operation. '+' for addition, '-' for subtraction, '*' for multiplication, '/' for division, '%' for remainder and '^' for power");
    string mathOperator = Console.ReadLine();

    firstNumber = Convert.ToDouble(firstNumberAsText);
    secondNumber = Convert.ToDouble(secondNumberAsText);
    Operator = Convert.ToChar(mathOperator);

    double result;

    switch (Operator)
    {
        case '+':
            result = firstNumber + secondNumber;
            break;

        case '-':
            result = firstNumber - secondNumber;
            break;

        case '*':
            result = firstNumber * secondNumber;
            break;

        case '/':
            result = firstNumber / secondNumber;
            break;

        case '%':
            result = firstNumber % secondNumber;
            break;

        case '^':
            result = Math.Pow(firstNumber, secondNumber);
            break;

        default:
            Console.WriteLine("unrecognised operator: " + Operator);
            break;
    }

    Console.WriteLine(result);

    Console.ReadKey();

2 个答案:

答案 0 :(得分:3)

错误本身会告诉您问题所在:

  

错误CS0165:使用未分配的本地变量“结果”

这意味着您正在尝试使用可能尚未初始化的变量。请注意,它在声明时并未初始化,并且在switch语句的default:情况下也未分配值。

因此,有两种方法可以解决此问题:

1)声明变量时对其进行初始化

double result = 0;

2)或者,确保在使用每个可能的代码路径(包括默认开关大小写)之前为其分配一个值

default:
    result = 0;
    Console.WriteLine($"unrecognised operator: {Operator}");
    break;

答案 1 :(得分:1)

对于无法识别的运算符,在尝试执行resultConsole.WriteLine()变量将是未定义的。捕获默认行为时,您需要将其设置为一个值,或者在切换之前将其初始化。