1

有人可以向我解释为什么这不起作用:

int[][] array = new int[0][5];
int n = array[0].length;

虽然这确实有效:

int[][] array = new int[5][5];
int n = array[0].length;

当我遇到这个问题时,我正在做一些单元测试来查找 NxN 数组的宽度和高度。

4

3 回答 3

4

您正在制作一个大小为零的数组,该数组将容纳一个大小为 5 的数组

int[][] array = new int[0][5];

您必须至少给出 1 的维度

int[][] array = new int[1][5];  

基本上变成一维数组

int[] array = new int[5];
于 2012-09-29T22:11:15.820 回答
1

int[][] a = new int[x][y]是创建x大小数组的循环的简写y

int[][] a = new int[x][];
for (int i = 0; i < x; i++)
  a[i] = new int[y];

何时x为零则无关紧要,因为从未创建过任何y大小的数组。y事实上,在一般情况下,数组没有理由x需要相同大小,甚至存在,因为 a 的任何元素都可能只是数组null而不是int数组。

于 2012-09-29T23:13:59.540 回答
0
int[][] a = new int[0][5]; 

您正在尝试制作零大小的数组,请记住在 2D 数组中first []表示size.array

例子:

int[][] a = new int[2][4];    
a = {(1,2,3,4}, {5,6,7,8}}
System.out.println(a.length);// would return `2`
于 2012-09-29T22:14:07.370 回答