Składnia tworzenia tablicy dwuwymiarowej

Zastanów się:

int[][] multD = new int[5][];
multD[0] = new int[10];

Czy w ten sposób tworzysz tablicę dwuwymiarową z 5 wierszami i 10 kolumnami?

Widziałem ten kod online, ale składnia nie miała sensu.

Rozwiązanie

Spróbuj następujących czynności:

int[][] multi = new int[5][10];

... co jest skrótem dla czegoś takiego:

int[][] multi = new int[5][];
multi[0] = new int[10];
multi[1] = new int[10];
multi[2] = new int[10];
multi[3] = new int[10];
multi[4] = new int[10];

Zauważ, że każdy element zostanie zainicjowany do wartości domyślnej dla int, 0, więc powyższe są również równoważne z:

int[][] multi = new int[][]{
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
Komentarze (7)

Najczęstszym idiomem do tworzenia dwuwymiarowej tablicy z 5 wierszami i 10 kolumnami jest:

int[][] multD = new int[5][10];

Alternatywnie, możesz użyć następującego, który jest bardziej podobny do tego, co masz, chociaż musisz jawnie zainicjować każdy wiersz:

int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
  multD[i] = new int[10];
}
Komentarze (3)

Spróbuj:

int[][] multD = new int[5][10];

Zauważ, że w twoim kodzie tylko pierwszy wiersz tablicy 2D jest zainicjowany na 0. Linie od 2 do 5 nawet nie istnieją. Jeśli spróbujesz je wydrukować, otrzymasz null dla każdej z nich.

Komentarze (0)