Kezdőoldal » Számítástechnika » Programozás » Exception in thread "main"...

Exception in thread "main" java. Lang. NullPointerException, hogy oldjam meg?

Figyelt kérdés

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?


2017. jan. 18. 18:40
 1/5 anonim ***** válasza:
Igen mert 0. Iterációban nem létezik még csak t[0]. Az értékadásokat tedd a for cikluson kívülre.
2017. jan. 18. 18:54
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

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).

2017. jan. 18. 18:55
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:

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".

...

2017. jan. 18. 18:57
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

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.

2017. jan. 18. 18:59
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:
Köszi!
2017. jan. 18. 19:03

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!