[英]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.