Exception in thread "main" java. Lang. NullPointerException, hogy oldjam meg?
package auto;
public class Auto {
String tipus;
int evjarat;
String szin;
int szemelyszam;
int ajtoszam;
public static void main(String[] args) {
Auto t[]= new Auto[4];
for(int i=0;i<t.length;i++) {
t[i] = new Auto();
t[0].tipus= "Volkswagen Golf";
t[0].evjarat= 2000;
t[0].szin= "Fekete";
t[0].szemelyszam= 4;
t[0].ajtoszam= 5;
t[1].tipus= "Ford Focus";
t[1].evjarat= 2004;
t[1].szin= "Kék";
t[1].szemelyszam= 5;
t[1].ajtoszam= 5;
t[2].tipus= "Ford Mustang";
t[2].evjarat= 2016;
t[2].szin= "Piros";
t[2].szemelyszam= 4;
t[2].ajtoszam= 3;
t[3].tipus= "Chevrolet Blazer";
t[3].evjarat= 1985;
t[3].szin= "Zöld";
t[3].szemelyszam= 3;
t[3].ajtoszam= 2;
}
}
}
Ha ezt lefuttatom, akkor ezt írja ki:
Exception in thread "main" java.lang.NullPointerException
at auto.Auto.main(Auto.java:32)
Java Result: 1
Ha rákattintok, akkor azt jelzi, hogy a
t[1].tipus= "Ford Focus";
sortól van a hiba. Hogy oldjam meg?
Mikor a for ciklusban először vagy benne, akkor még csak t[0] van létrehozva (nem ide tartozik, de mért ne tanuld meg már most: a változónevek jobb, ha beszédesek), ezért mikor t[1]-re próbálsz hivatkozni, akkor egy kósza pointert ragadsz meg, mert ez az elem még nincs létrehozva. Ez dobja ki az exception-t.
Megoldás: Zárd be a for ciklust ezután a sor után:
t[i] = new Auto();
Ezáltal azt is elkerülöd, hogy többször végezd el a feltöltést, amivel időt veszítesz, meg úgy általában értelmetlen.
Megjegyzések még:
1. Az IDE, amit használsz, rendelkezik debuggerrel? Mert ha igen, akkor az valószínűleg segített volna megtalálni a probléma forrását (végülis most én voltam a debugger; ugyanazt is csináltam: Sorról sorra megnéztem a programot).
2. Guglizz. Beírod a hibakódot, és valószínűleg kapsz tanácsokat.
3. Próbáld meg ilyenkor kommentekkel ellátni a programot, még ha egy ilyen kis dologról is van szó. Rákényszeríted magad arra, hogy elgondolkodj, mit csinálsz, és lehet, eszedbe jut a megoldás.
4. Gumikacsa-módszer: Az előbbi továbbfejlesztett verziója. Próbáld meg egy gumikacsának elmagyarázni a programot (ez viccesen hangzik, de nem marhulok: sokszor ráírtam egy ismerősre, hogy miért nem működik a programom, és mire megírtam volna a levelet, rájöttem magamtól).
Röviden:
Benézted a for ciklusmagját.
Bővebben:
Ezt kellene csinálni:
1) Hozd létre a 4 elemű Auto tömböt.
2) A 0. indexű elem legyen egy új autó.
3) Az 1. indexű elem legyen egy új autó.
...
5) A 3. indexű elem legyen egy új autó.
6) A 0. indexű autónak a típus tulajdonsága legyen "Tesla".
7) Az 1. indexű autónak a típus tulajdonsága legyen "Opel".
Te ezt csinálod:
1) Hozd létre a 4 elemű Auto tömböt.
2) A 0. indexű elem legyen egy új autó.
3) A 0. indexű autónak a típus tulajdonsága legyen "Tesla".
4) Az 1. indexű autónak a típus tulajdonsága legyen "Opel". (MÉG LÉTRE SE HOZTAD!)
...
n) Az 1. indexű elem legyen egy új autó.
n+1) A 0. indexű autónak a típus tulajdonsága legyen "Tesla".
n+2) Az 1. indexű autónak a típus tulajdonsága legyen "Opel".
...
Ezt a hozzászólásomat csak akkor vedd figyelembe, ha komolyan akarsz foglalkozni a programozással (pl. ebből akarsz megélni).
Te is ahelyett, hogy rászánnád az időt és átgondolnád, mit írtál le, egyből jössz ide segítségért, és sajnos meg is kapod.
Sokkal többet tanulnál, ha megtanulnál magadtól rájönni a hibára és megismernéd azokat az eszközöket, amik segítenek neked felderíteni.
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!