做了一个简单的数组,似乎有一个编译错误

时间:2013-08-29 03:12:50

标签: java arrays loops

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

我究竟做错了什么?

2 个答案:

答案 0 :(得分:6)

因为在for循环中声明i并且你在范围之外使用它。

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

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

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

或者,你也可以使用增强的for循环,它特别用于迭代数组和arraylists,

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

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

答案 1 :(得分:0)

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

  

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