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。