2016-05-05 150 views
-10

我写下面的代码:为什么外for循环变量不能在内部可用于循环

int j =0; 
for(j=0; j< 10;j++){ 
    System.out.println("Printing outer for loop :" +j); 
    for(j; j < 8; j++) 
    { 
    System.out.println("Printing inner for loop" + j); 
    } 
} 

的Eclipse显示我以下错误:

Syntax error on token "j", ++ expected after this token 

我不明白其中的道理背后。任何解释将不胜感激。由于

+3

你有什么期望'焦耳;'怎么办?如果你不想为'j'指定一个初始值,只需要写'for(; j <8; j ++)' – Eran

+3

原因是,对于(j; j < 8; j ++)'不是有效的循环。 –

+0

我明白了。感谢您的反对票;) –

回答

2

JLS定义的,for循环声明中的第一个“部分”, ForInit,是list of statement expressions or a local variable declaration; j不是语句表达式(一个赋值;前/后增加/减少;方法调用;新类初始化)或局部变量声明,因此它是无效的语法。

取决于你正在尝试做的,你可以忽略它:

for (; j < 8; j++) 

注意,所有的for循环的三个“零件”都是可选的:例如,这是好的:

for (;;) { 
} 

(这只是一个无限循环)

0

循环不像函数那样分离。

2

j;不是一个有效的语句,这就是为什么你的内循环不能编译。你不需要把一个声明那里,你可以离开了“第一部分”空在内部循环:

int j =0; 
for(j=0; j< 10;j++){ 
    System.out.println("Printing outer for loop :" +j); 
    for(; j < 8; j++) 
    { 
     System.out.println("Printing inner for loop" + j); 
    } 
}