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.
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 }
};
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];
}
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.