我正在学习 Java,但遇到此错误。我知道这个问题已经被问过几次(很多次),但似乎没有一个答案能回答我的问题。代码主体是:
String[] number = {"too small", "one", "two", "three", "four", "too large"};
int i;
if(num<1){
i=0;
}
if(num==1){
i=1;
}
if(num==2){
i=2;
}
if(num==3){
i=3;
}
if(num==4){
i=4;
}
if(num>4){
i=5;
}
return number[i];
其中变量“num”是先前声明、初始化和给定的。 我得到的错误是:“变量‘i’可能尚未初始化”并指向最后一行(返回 number[i];)。
问题是,如果我声明“i”并立即分配一个值(int i=0;),则代码运行良好。但是,如果我不分配值,即使在每个“if”之后分配了可能的值,也会收到错误。
例如,我在使用 C 语言时就不会出现此类错误。
谢谢
最佳答案
Java 不会分析 if
block 的逻辑来确定您的 if
语句之一将运行并向 i
赋值。它很简单,它可以看到没有 if
语句运行的可能性。在这种情况下,在使用之前不会为 i
分配任何值。
Java不会给局部变量赋予默认值,即使它给类变量和实例变量赋予默认值。 Section 4.12.5 of the JLS涵盖这个:
Every variable in a program must have a value before its value is used:
和
A local variable (§14.4, §14.14) must be explicitly given a value before it is used, by either initialization (§14.4) or assignment (§15.26)
在声明时为 i
分配某种默认值,以满足编译器的要求。
int i = 0;
// Your if statements are here.
return number[i];
关于Java:错误:变量可能尚未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57652212/