变量未初始化,但是,正确>

时间:2017-11-20 19:19:26

标签: java conditional logical-operators

基于这篇文章的团队:https://www.sitepoint.com/how-to-declare-variables-javascript/

我声明并初始化了我的变量int结果; 然后在块语句中为其分配一个值,即

if(opCode == 'a') 
result = varX + varY

但是,我最后的print语句收到以下错误:

  

错误:(32,28)java:变量结果可能尚未初始化

提前谢谢。这应该有助于所有其他新手开始使用条件语句和块语句。 cODE在下面。

package com.pluralsight.excercise1_conditionalstatements;
public class Main {

public static void main(String[] args) {
    int varX = 10;
    int varY = 4;
    int result;
    char opCode = 'a';


    if (opCode == 'a') {
        result = varX + varY;
    } else if (opCode == 's') {
        result = varX - varY;
    } else if (opCode == 'd') {
        result = varX / varY;
    } else if (opCode == 'm') {
        result = varX * varY;
    } else {
        System.out.println("Error, invalid code");
    }
    System.out.println(result);
}

}

4 个答案:

答案 0 :(得分:0)

您的变量未初始化。只有满足您的一个条件时才会初始化它。这就是编译器抱怨的原因。

声明它时需要给它一些int值。例如:

int result = -1;

答案 1 :(得分:0)

这是java编译返回未初始化的result的可能性。

将变量声明为int result = 0;应该有效。

答案 2 :(得分:0)

问题在于这一行:

System.out.println(result);

如果操作码不等于a,则s,d或m结果永远不会得到值,而且我们尝试打印它会产生错误。但是,您已将opCode设置为等于'a',但java不知道这意味着结果将获得一个值(当然我们可以看到它)。所以你应该将int结果改为例如:

int result = 0; 

答案 3 :(得分:0)

计算机正在向您提供此信息,因为在else语句之后,因为您没有完整退出该函数的语句。并且你在最后一个println中使用它,而不是在最后的println之后。事实上,有一个底池可以使用Lost print语句,而不会初始化结果。如果你在else块中放入一个return语句,AST会发现你没有达到你使用结果的最终打印行,并停止给你警告。