我一直使用公共数组获取NullPointerException

时间:2012-05-19 22:55:00

标签: java arrays nullpointerexception

我有两个课程:MainSub1

anArraySub1中声明如下:

  public static int[] anArray;
  public Sub1 () {
      anArray = new int[15];

然后在Sub1中,我尝试设置它:

  public static void methodOne() {
      anArray[0] = 5;

但是当我尝试运行代码时,我得到一个NullPointerException,并且消息指定:

Sub1.methodOne (Sub1.java:249)

这是指代码:

  anArray[0] = 5;

为什么不让我改变阵列?如果我发表评论,错误仍然会发生,只是移动到另一行我尝试更改数组索引的值。

3 个答案:

答案 0 :(得分:4)

anArray是一个static字段,尝试在该类的构造函数中初始化它没有意义。如果您希望它为static,只需在声明处初始化它:

public static int[] anArray = new int[15];

如果您希望anArraymethodOne成为实例成员,请删除他们的static修饰符。

无论哪种方式,我都建议你制作变量anArray private,这样只有公开曝光的方法才能修改其内容和final,因此您不会意外地重新分配它。

答案 1 :(得分:3)

尝试按如下方式初始化数组,

public static int[] anArray = new int[15];

static变量并非特定于类的实例,因此在默认构造函数中初始化变量可能没有意义(尽管我必须要查看更多代码才能确定如果是这种情况)。

答案 2 :(得分:1)

您需要显示更多代码,但您的方法和数组是静态的,并且您正在构造函数中初始化数组。我的猜测是你没有在任何地方调用构造函数。