Java - Több dimenziós tömb, mi lehet a probléma?
Teszt kód (ezzel sem működik):
public static int[][] blockGrass;
blockGrass[1][3] = 2;
Eredeti kód:
public static int[][] blockGrass;
blockGrass[x+y][0] = getPixelData(img, 6+x, 6+y, 1);
Az x és y két egymásba ágyazott for ciklusból származik, maximum értéke mindkettőnek 58. A getPixelData minden esetben int-et ad vissza.
Hiba:
Exception in thread "main" java.lang.NullPointerException at core.Main.main(Main.java:137)
#1: Érdemes utánanézned. :)
Kérdező:
A probléma az, hogy létre is kéne hozni azt a tömböt, nem csak referenciát definiálni rá.
int[][] matrix; // <-- ez csak a referencia
matrix = new int[3][6]; // <-- itt hozod létre
Mindkét út járható, lehet tömbök tömbje vagy többdimenziós tömb is. Utóbbinál lehetnek a sorok különböző hosszúságúak.
int[][] multA = new int[5][10];
int[][] multB = new int[5][];
for(int i=0; i<5; i++) {
multB[i] = new int[10];
}
Itt tisztában kellene lenni néhány dologgal.
Mi is a 2 dimenziós tömb? Ugye egy mátrix, ami így néz ki:
[] [] [] []
[] [] [] []
[] [] [] []
[] [] [] []
Ez egy 4×4-es mátrix.
Amikor létrehozol egy mátrixot, muszáj ismernünk az sorok hosszát, pontosan azért, hogy ilyet ne lehessen létrehozni:
[] [] [] []
[] []
[] [] [] []
[] [] []
Ugye, itt nem tudunk mondani pontos sor/oszlop számot.
Így deklarációnál meg kell adni ez egyiket. És egy tömböt a new kulcsszóval kell allokálni.
Tehát, egy valid int mátrix így deklarálódik, ezek közül mind valid:
int[][] matrix = new int[n][];
vagy,
int[][] matrix = new int[n][m];
és ez is lehet valid:
int[][] matrix = new int[n][];
matrix[0] = new int[m];
matrix[1] = new int[m];
matrix[2] = new int[m];
matrix[3] = new int[m];
.
.
.
matrix[n-1] = new int[m];
matrix[n] = new int[m];
illetve:
matrix[0] = 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}
};
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!