Considerate:
int[][] multD = new int[5][];
multD[0] = new int[10];
È così che si crea un array bidimensionale con 5 righe e 10 colonne?
Ho visto questo codice online, ma la sintassi non aveva senso.
Provate quanto segue:
int[][] multi = new int[5][10];
... che è un'abbreviazione per qualcosa del genere:
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];
Notate che ogni elemento sarà inizializzato al valore di default di int
, 0
, quindi quanto sopra è anche equivalente a:
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 }
};
L'idioma più comune per creare un array bidimensionale con 5 righe e 10 colonne è:
int[][] multD = new int[5][10];
In alternativa, si potrebbe usare il seguente, che è più simile a quello che avete, anche se è necessario inizializzare esplicitamente ogni riga:/sub>
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
Prova:
int[][] multD = new int[5][10];
Nota che nel tuo codice solo la prima riga dell'array 2D è inizializzata a 0.
Le righe da 2 a 5 non esistono nemmeno. Se provi a stamparle otterrai null
per ognuna di esse.