Bedenken Sie:
int[][] multD = new int[5][];
multD[0] = new int[10];
Erzeugt man so ein zweidimensionales Array mit 5 Zeilen und 10 Spalten?
Ich habe diesen Code online gesehen, aber die Syntax machte keinen Sinn.
Versuchen Sie das Folgende:
int[][] multi = new int[5][10];
... was eine Abkürzung für etwas wie dieses ist:
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];
Beachten Sie, dass jedes Element mit dem Standardwert für int
, 0
, initialisiert wird, so dass die obigen Angaben auch äquivalent sind zu:
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 }
};
Die gebräuchlichste Redewendung, um ein zweidimensionales Array mit 5 Zeilen und 10 Spalten zu erstellen, ist:
int[][] multD = new int[5][10];
Alternativ könnten Sie das Folgende verwenden, was dem, was Sie haben, ähnlicher ist, obwohl Sie jede Zeile explizit initialisieren müssen:
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
Versuchen Sie es:
int[][] multD = new int[5][10];
Beachten Sie, dass in Ihrem Code nur die erste Zeile des 2D-Arrays auf 0 initialisiert ist.
Die Zeilen 2 bis 5 existieren gar nicht. Wenn du versuchst, sie auszudrucken, bekommst du für jede von ihnen null
.