如何在Java中构建二维数组?

时间:2014-12-09 11:04:35

标签: java multidimensional-array constructor

我陷入一个非常简单的问题超过2个小时。我正在尝试创建一个二维数组并用构造函数填充它。但是,我无法通过这一步。

public class Test
{    
     public State [][] test1= new State[4][3];//
     public State test2[][]= new State[4][3];//
     public State [][]test3;
     public State test4[][];

     public class State{
         int position;
         double reward;
         int policy;
     }

     public Test(){
            test1[1][1].position=1; // never worked
            test2[1][3].position=2; //never worked
            test3=new State[4][3];
            test3[1][2].position=3; //never worked
            test4=new State[4][3];
            test4[2][2].position=4;//never worked
     }
}

我使用以下代码调用上面的函数

Test test= new Test();
Log.e("done","pass"); //I never reach here. the code always stuck on the constructor.

1 个答案:

答案 0 :(得分:6)

创建数组时:

public State [][] test1 = new State[4][3];

您正在创建一个可容纳4 * 3 State个实例的数组,但数组中的每个位置都会初始化为null

在访问数组之前,您需要为数组中的每个位置分配State的实例。如果你没有,你将获得NullPointerException

例如:

public Test()
{
    test1[1][1] = new State();
    test1[1][1].position = 1;
    ....
}