Java programozási nyelvben hogyan kell létrehozni olyan ArrayList-et, aminek elemei (egy saját class) tömböt (int[][]) és Stringet tartalmaznak?
Ezen a linken elérhető a forráskódom, ami nem fut le ezen az oldalon mert külső adatot kéne használni. A megoldas.txt eleje a következő:
10
Absolon
0 0 0 0 11 0 11 0 0 0
11 0 2 0 0 0 0 0 0 0
0 0 0 0 0 1 0 11 0 0
0 0 0 11 0 0 0 0 0 0
0 3 0 0 0 0 0 0 11 0
0 0 0 0 2 0 11 0 0 0
0 11 0 0 0 0 0 0 3 0
0 0 0 0 0 0 3 0 0 0
0 11 0 3 0 0 0 0 11 0
0 0 0 0 0 0 11 0 0 0
Agaton
0 0 0 0 11 0 11 0 0 11
11 0 2 0 0 0 0 0 0 0
0 0 0 0 0 1 0 11 0 0
0 0 0 11 0 0 0 0 0 0
0 3 0 0 0 0 0 0 11 0
0 0 0 0 2 0 11 0 0 0
0 11 0 0 0 0 0 0 3 0
0 0 0 0 0 0 3 0 0 0
0 11 0 3 0 0 0 0 11 0
0 0 0 0 0 0 11 0 0 0
Ez egy név és hozzá egy 10*10-es tábla, aminek elemeit el kéne tárolni. A fenti forráskód hibája, hogy végeredményül valamiért az összes class-omban a táblázat teljesen megegyezik, nem tárol el csak 1-et (az utolsóét).
Nem tudom, hogy mennyire vagy kezdő programozó, de nálam ez a hiba benne van a "Top1 miért nem jó programozási nyelv kezdőknek a Java/C#/egyéb felügyelt nyelv." listámban.
A baj az, hogy a megoldas konstruktorában azt írod, hogy tomb=feladat. A feladat egy kétdimenziós tömb, ami azt jelenti, hogy tömbök tömbje, azaz tulajdonképpen egy olyan tömb, ami tömböket tartalmaz. Azaz a feladat tömbödben a többi tömbnek a memóriacímét tárolja el, és amikor te a megoldasTomb-öt átadod a konstruktornak, akkor csupán a megoldasTomb-ben lévő többi tömb memóriacímét másolod át. Azonban a beolvasós ciklusodban végig ugyanannak a memóriacím alatti tömbnek (megoldasTomb) az értékeit írod felül.
Ahhoz, hogy ezt orvosold, a megoldas konstruktorában ciklussal másolatot (klónt) kell készítened a feladat tömbről:
megoldas (int[][] feladat, String neve){
tomb = new int[10][];
for(int i = 0; i < 10; i++){
tomb[i] = feladat[i].clone();
}
nev = neve;
}
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!