char - 此局部变量可能尚未初始化

时间:2014-09-25 18:43:44

标签: java char local-variables

我正在尝试制作一个基本的计算器来学习Java,并且在我的switch语句中一直说“这个局部变量可能没有被初始化”。这是代码的一部分

char operator;

    System.out.println("Enter First number");
    firstNumber = scan.nextDouble();

    System.out.println("Enter Second Number");
    secondNumber = scan.nextDouble();

    switch(operator) { 
     case '+':
        answer = firstNumber + secondNumber;
        System.out.println("Result = "+ answer);
        break;

(之后继续使用switch语句)

当我尝试编译我的程序时,它告诉我在switch(运算符)中运算符尚未初始化并且在'operator'下用红线表示'这个局部变量可能没有被初始化'。

它告诉我,我应该写:

char operator = 0;

这没用,所以我试过

 char operator = null;

这也没有用 它会自动运行到

default:
       System.out.println("Syntax Error");

如果案例没有正确完成,这是我的默认值。它运行到此,因为我已经定义了运算符应该是什么。

我该怎么做才能解决这个问题?

PS抱歉,如果这是一个混乱的帖子(这是我在StackOverflow上的第一个),如果您需要更多信息,请询问

3 个答案:

答案 0 :(得分:1)

在这种情况下你应该使用以下代码。在使用

之前,必须初始化.char运算符
System.out.println("choose operator");
operator c = scan.next().charAt(0);

答案 1 :(得分:0)

在switch语句中,只有+的大小写,因此将operator初始化为0或null只会与default大小写匹配。最好用+

初始化它

答案 2 :(得分:0)

如果你只想进行操作" +"对于instace,所以初始化运算符: operator = '+'; 但是,如果你想选择一些操作来执行calc所以使用null初始化运算符,请在控制台上请求操作:

System.out.println("choose operator");
operator = scan.next().charAt(0);

现在您可以在开关盒上使用操作器而不会出现问题。
如果聊天类型不是在case语句中输入,您还会在默认情况下发送消息。