2013-08-29 60 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引用:

块中的局部变量声明的范围的 其余块在该声明出现,从其自己的 初始值设定项开始,并在 局部变量声明语句右侧包含任何其他声明符。

相关问题