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]xsize の配列を作成するループの略記です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]; 

サイズがゼロの配列を作成しようとしていfirst []ます。sizearray

例:

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 に答える