2016-05-05 195 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); 
    } 
}