Java 不断获取未声明的变量错误,我不';我不知道从哪里来
我一直在犯错误Java 不断获取未声明的变量错误,我不';我不知道从哪里来,java,compiler-errors,initialization,Java,Compiler Errors,Initialization,我一直在犯错误 main.java:77: error: variable fAnswer might not have been initialized out.println("The answer is: " + fAnswer); ^ 我也找不出原因。那么,在点击此语句之前,您是否确保始终为它赋值 更新:只需阅读代码,因此如果选择2或3,那么变量将永远不会被赋值。但是编译器无法保证用户将命中2或3,因此它警告您该变量“可能
main.java:77: error: variable fAnswer might not have been initialized
out.println("The answer is: " + fAnswer);
^
我也找不出原因。那么,在点击此语句之前,您是否确保始终为它赋值 更新:只需阅读代码,因此如果选择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
总之,最好初始化为某个已知值。错误表明,根据
选择的值,fAnswer
可能无法初始化。例如,如果您有一个选项==4
,fAnswer
在调用out.println(“答案是:“+fAnswer)
”)之前不会为其分配值。这意味着fAnswer
将指向垃圾,它可能不是您想要的
尝试在声明时定义它
double fAnswer = -1.0; // Or something like this.
编译器不够聪明,无法确保在将变量用于此特定行之前,已通过所有可能的代码路径指定了该变量。要使编译器安静,只需在声明变量时给它一个值:
double fAnswer = 0.0;
是的,它会根据其中一个函数的返回值分配一个值。请将代码段复制并粘贴到此处。请包括何时声明到何时发生println。