Kezdőoldal » Számítástechnika » Programozás » Java - Több dimenziós tömb,...

Java - Több dimenziós tömb, mi lehet a probléma?

Figyelt kérdés

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)


2015. jan. 14. 17:15
 1/5 anonim ***** válasza:
14%
Nekem úgy rémlik, hogy a javában nincs is kétdimenziós tömb. Talán ez lehet a hiba forrása. Két lépcsőben kell csinálni, és tömböket tartalmazó tömböt létrehozni.
2015. jan. 14. 17:19
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

#1: Érdemes utánanézned. :)

[link]


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

2015. jan. 14. 17:24
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:

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];

}

2015. jan. 14. 17:54
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
Köszönöm szépen a válaszokat, a segítségetekkel megoldásra jutottam! :)
2015. jan. 14. 17:57
 5/5 anonim ***** válasza:

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}

};

2015. jan. 15. 09:36
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!