使用Eclipse Luna时我遇到了这个问题:当我在for
循环(或其他结构)中声明 之外的变量时,然后在 > For循环,在关闭for
循环后,for
循环中分配给变量的值不会被转移。
也许这就是它应该是的样子,但是当使用Eclipse Juno时,我没有遇到这个问题。
int sebastian;
for(int i=0;i<8;i++)
{
sebastian = 5*i;
System.out.println(sebastian);
}
答案 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