我正在用一个非常基本的计算器脚本练习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 ();
}
}
}
答案 0 :(得分:0)
如果用户输入无效操作,它将进入default:
流程。在这种情况下,永远不会分配result
。
您可以通过执行以下操作来解决此问题:
float result = 0;
或:
default:
Console.WriteLine (error);
result = 0;
break;
答案 1 :(得分:0)
您没有初始化变量result
,并且未在所有执行路径上分配它。您可以通过在声明时初始化它来克服此编译器错误:
float result = 0;
...或者将其设置在交换机的default
路径中:
default:
result = 0;
Console.WriteLine(error);
break;
答案 2 :(得分:0)
如果用户输入了异常的内容,那么它将转到default
大小写,因此您可以通过类似
default:
{
Console.WriteLine (error);
result = 0;
break;
}