繁体   English   中英

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

[英]variable not initialized, BUT IT IS , right>

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

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

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

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

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

提前致谢。 这应该可以帮助所有其他新手开始使用Conditional和block语句。 下方是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);
}

}

您的变量未初始化。 仅当满足您的条件之一时,它才会被初始化。 这就是编译器抱怨的原因。

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

int result = -1;

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

将变量声明为int result = 0; 应该管用。

问题是这一行:

System.out.println(result);

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

int result = 0; 

计算机会在else语句之后正确地向您提供此信息,因为您没有干净地退出该函数的语句。 您正在最后一个println中使用它,而在最后一个else之后紧接着使用它。 因此,事实上,有一个可以使用Lost print语句的容器,而不会初始化结果。 如果在else块中放置return语句,则AST会确定未达到使用结果的最终打印行,并不再发出警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM