Denk er eens over na:
int[][] multD = new int[5][];
multD[0] = new int[10];
Is dit hoe je een tweedimensionale array maakt met 5 rijen en 10 kolommen?
Ik zag deze code online, maar de syntaxis was niet logisch.
Probeer het volgende:
int[][] multi = new int[5][10];
... wat een afkorting is voor iets als dit:
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];
Merk op dat elk element wordt geïnitialiseerd op de standaard waarde voor int
, 0
, dus het bovenstaande is ook equivalent aan:
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 }
};
De meest voorkomende idioom om een tweedimensionale array te maken met 5 rijen en 10 kolommen is:
int[][] multD = new int[5][10];
Als alternatief zou je het volgende kunnen gebruiken, wat meer lijkt op wat je hebt, hoewel je elke rij expliciet moet initialiseren:
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
Probeer het:
int[][] multD = new int[5][10];
Merk op dat in je code alleen de eerste regel van de 2D-array op 0 is geïnitialiseerd.
Lijn 2 tot en met 5 bestaan niet eens. Als je ze probeert te printen krijg je null
voor elk van hen.