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[])

我到底做错了什么?

4

2 回答 2

6

因为i是在 for 循环中声明的,并且您正在使用它超出范围。

变量的范围i仅限于for块。

如果要遍历数组,则可以使用

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

否则,您还可以使用增强的 for 循环,该循环特别用于迭代数组和数组列表,

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

这样您就不必自己处理增量和索引变量。

于 2013-08-29T03:13:42.457 回答
0

为了支持@prasad kharkar 的回答,我想引用JLS 的第 14.4.2 节

块中局部变量声明的范围是声明出现的块的其余部分,从它自己的初始化程序开始,并在局部变量声明语句的右侧包括任何进一步的声明符。

于 2013-08-29T03:25:54.217 回答