(初学者Java)为什么我的数组为null?

时间:2014-10-04 03:15:24

标签: java arrays null

这是我的方法:

public int randomIntegers() {
    array = new int[20];
    Random r = new Random();

    for(i =0; i<20; i++) {
        int intRandom = r.nextInt(1000);
        if (intRandom >= 100) {
            array[i] = intRandom;       
        }
    }
    return array[i];
}

的println:

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

当我在main方法中使用println时,我得到一个NullPointerException。诚实地试图在概念上理解为什么这不起作用,无济于事。

2 个答案:

答案 0 :(得分:3)

您正在尝试返回整数,而不是整个数组。整数甚至不是有效的,因为您试图在数组中的最后一个整数之后返回整数。

我猜你想要将整个数组返回到main方法,如果需要,你需要更改方法签名以返回一个数组,并更改return语句,如下所示:

public int[] randomIntegers() {
   //code....
   return array;
}

另一方面,您并不总是用生成的整数填充数组。当产生的随机数<1时,时隙将是。 100(大约每十分之一),不被填充,因此在int的槽中具有值0。

答案 1 :(得分:0)

如果您问题中的代码真实反映了您实际运行的代码,那么

的唯一合理解释
     System.out.println(array[i]);
投掷NPE是:

  • 您还没有打电话给randomIntegers()(尚未)。
  • 您要打印的arrayarray方法所指定的randomIntegers不同变量

如果没有解释,请使用整个计划和堆栈跟踪更新您的问题。