我一直收到错误
main.java:77: error: variable fAnswer might not have been initialized
out.println("The answer is: " + fAnswer);
^
我无法找到原因。
答案 0 :(得分:2)
错误表明,根据choice
值,fAnswer
可能无法初始化。例如,如果您有choice == 4
,则在致电fAnswer
之前,out.println("The answer is: " + fAnswer)
将没有为其分配值。这意味着fAnswer
将指向垃圾,它可能不是您想要的。
尝试在声明点
定义它double fAnswer = -1.0; // Or something like this.
答案 1 :(得分:0)
您是否确保在点击此声明之前始终为其分配值?
更新:只需阅读您的代码,因此如果选择为2或3,则永远不会分配变量。但编译器无法保证用户将达到2或3,因此它会警告您此变量"可能"尚未初始化。实际上,只要有一个条件分支,其真值取决于变量或函数返回值,那么编译器就会在安全方面犯错并决定它不能保证它将采用哪个分支。例如:
boolean alwaysTrue = true;
int i;
if (alwaysTrue) {
i = 1;
}
System.out.println("i is " + i); // will generate error
if (true) {
i = 1;
}
System.out.println("i is " + i); // will not generate error
总之,最好初始化为某个已知值。
答案 2 :(得分:0)
编译器不够智能,无法确定变量是否已在此特定行上使用之前通过所有可能的代码路径分配。要安静编译器,只需在声明时为变量赋值:
double fAnswer = 0.0;