2013-08-29 83 views
0
import java.util.Random; 

public class RandomWithArray { 
    public static void main(String[] args){ 
       Random r = new Random(); 

       int[] num = new int[5]; //same as "= {0,0,0,0,0} 

       for (int i = 0; i <num.length; i++){ 
        num[i] = r.nextInt(100) + 1; 
       } 

       System.out.println(num[i]); 

    } 
} 

Eclipse是告訴我,在打印線,有沒有一個簡單的數組,並似乎有一個編譯錯誤

Multiple markers at this line 
    - i cannot be resolved to a variable 
    - Line breakpoint:RandomWithArray [line: 14] - 
    main(String[]) 

究竟我做錯?

+1

'for'''循環專門用於限制循環控制變量(在本例中爲'i')的範圍。你不能在'for'循環的範圍之外訪問'i'。 – arshajii

+0

即使'i'被定義在外部,當他在外部訪問它時,會有一個arrayOutOfBounds異常 –

回答

6

因爲i在for循環中聲明並且您在超出範圍使用它。

變量i的範圍僅限於for塊。

如果你想通過數組進行迭代,那麼你可以使用

for (int i = 0; i <num.length; i++){ 
     System.out.println(num[i]); 
} 

要不,你也可以使用增強的for循環,其特別用於遍歷數組和的ArrayList,

for(int i : num){ 
    System.out.println(i); 
} 

這樣你就不必自己處理增量和索引變量。

0

在支持@prasad kharkar的回答,我想從section 14.4.2 of JLS引用:

塊中的局部變量聲明的範圍的 其餘塊在該聲明出現,從其自己的 初始值設定項開始,並在 局部變量聲明語句右側包含任何其他聲明符。

相關問題