2 u010835448 u010835448 于 2015.06.04 20:36 提问

在java中定义了一个二维数组,这样做好像不对,输出时报错, 代码如下

我是想要定义一个二维数组,然后动态地给它赋值,应该怎么做不知道问题出在做么地方,请大神指导一下 ,代码如下:
int[][] a = null;
a[1] = new int[]{1,2,3};
System.out.println(a[1][1]);

6个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.06.04 20:46
 int[][] a = null;
          a  = new int[5][];//第一维需要初始化
          a[1] = new int[]{1,2,3};//这是第二维数据
          System.out.println(a[1][1]);
mingxian
mingxian   2015.06.04 21:06

1楼正解。你的a没有初始化

sylvia1997
sylvia1997   2015.06.04 21:17

其实你可以直接就写int[][] a=new int[5][];
这样就不用担心不小心忘记初始化了。

tongyi55555
tongyi55555   2015.06.04 22:03

使用数组的时候一定要记得初始化,你第一行只是声明了a对象是个二维数组,并没有分配具体的内存空间;
第二行直接给a[1]赋值就会报空指针异常了,a[1]没有具体的内存空间啊。
所以使用数组的时候一定要进行初始化,比如声明
int[][] temp = new int[10][];

如果不知道空间大小,可以像你第一行那样,不过使用的时候一定要先初始化,这里的初始化是声明变量的初始化,而不是带下标的赋值。
上面声明的变量中第二维没有设长度,是因为Java支持不定长赋值,第二维的长度可以不一致,因此只要第一维初始化一个长度就可以了。

xionglangs
xionglangs   Rxr 2015.06.05 11:55

a都没有,没有空间还放一个东西先在前面初始化 int[][] a =new int[1][],先分配空间给他

qq_28763887
qq_28763887   2015.06.05 11:57

不好意思 ,帮不上你的忙 了,想了好久还是想不出

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!