Apsveriet:
int[][] multD = new int[5][];
multD[0] = new int[10];
Vai šādi var izveidot divdimensiju masīvu ar 5 rindām un 10 kolonnām?
Es redzēju šo kodu internetā, bet sintakse nebija saprotama.
Izmēģiniet:
int[][] multi = new int[5][10];
... kas ir saīsinājums šādam saīsinājumam:
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];
Ievērojiet, ka katrs elements tiks inicializēts ar int
noklusējuma vērtību 0
, tāpēc iepriekšminētais ir arī ekvivalents:
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 }
};
Lai izveidotu divdimensiju masīvu ar 5 rindām un 10 kolonnām, visbiežāk tiek izmantots šāds idioms:
int[][] multD = new int[5][10];
Kā alternatīvu var izmantot šādu, kas ir līdzīgāka jūsu rīcībā esošajai, lai gan jums ir skaidri jāinicializē katra rinda:
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
Izmēģiniet:
int[][] multD = new int[5][10];
Ņemiet vērā, ka jūsu kodā tikai 2D masīva pirmā rinda ir inicializēta ar 0.
No 2. līdz 5. rindiņai pat neeksistē. Ja jūs mēģināsiet tās izdrukāt, jūs saņemsiet null
par katru no tām.