当在For循环之外声明并在其中初始化时,Eclipse Luna中的错误'变量未初始化'

时间:2015-03-09 23:32:47

标签: java eclipse initialization eclipse-juno eclipse-luna

使用Eclipse Luna时我遇到了这个问题:当我在for循环(或其他结构)中声明 之外的变量时,然后在 > For循环,在关闭for循环后,for循环中分配给变量的值不会被转移。
也许这就是它应该是的样子,但是当使用Eclipse Juno时,我没有遇到这个问题。

int sebastian;

for(int i=0;i<8;i++)
{
    sebastian = 5*i;
    System.out.println(sebastian);
}

3 个答案:

答案 0 :(得分:0)

我不确定那里有什么问题,但它应该继续下去。它看起来好像结转了,当我运行它时,它就会结束。

我跑了

public static void main(String[] args) {
    int sebastian = 0;

    for (int i = 0; i < 8; i++) {
        sebastian = 5 * i;
        System.out.println(sebastian);
    }

    // this should print the last value a second time
    System.out.println(sebastian);
}

我的输出是

0
5
10
15
20
25
30
35
35 // this is the carry over that shows up

答案 1 :(得分:0)

局部变量没有默认值。在方法中编写int sebastian;时,变量sebastien不是值0,而是取消分配。在明确分配&#34;之前,您不能使用该变量。明确分配的规则很复杂。很明显,变量将在循环中被赋予一个值(因为循环重复8次),但这不符合明确赋值的规则。

int sebastian;
for(int i=0;i<8;i++)
{
    sebastian = 5*i;
    System.out.println(sebastian);  // sebastien is definitely assigned here. It was assigned the line before!
}
System.out.println(sebastian); // sebastien is not definitely assigned here.

最简单的方法就是给变量a&#34; dummy&#34;声明时的值:

int sebastien = -1; 

答案 2 :(得分:0)

请参阅Java语言规范中的“定义分配”规则。在分配值之前,不能引用局部变量: http://docs.oracle.com/javase/specs/jls/se7/html/jls-16.html