出于某种原因,即使我在for循环之外初始化变量,我的代码也不会编译......
public static void main(String[] args) {
int x;
for (int i = 0; i < 4; i++){
x = 10;
}
System.out.println(x);
}
我收到错误:
error: variable x might not have been initialized
System.out.println(x);
任何帮助都会非常感激,因为我知道答案会很简单。
答案 0 :(得分:0)
你声明了变量,你没有对它进行初始化,没有任何优化,编译器就不知道你的循环是否产生了一次迭代来实际初始化它。尝试:
{{1}}
不可否认,这是一个非常愚蠢的功能&#34; java编译器。
答案 1 :(得分:0)
只需更改它,以便int x = 0;
推断出x = 0,但在这种情况下需要初始化值。
public static void main(String[] args) {
int x = 0;
for (int i = 0; i < 4; i++){
x = 10;
}
System.out.println(x);
}
编辑:x值(不能为空)
答案 2 :(得分:0)
您在类级别声明的原始变量会自动初始化为零(或错误)。如果您的变量是一个对象,它将默认为null。
如果变量的范围是方法级别,则需要为它提供一个值:这就是编译器告诉你的。
在您的示例中,编译器不够聪明,无法看到值始终分配给变量x,因此要求您提供初始化值。
你只需要添加int x = 0;它会编译。