Kezdőoldal » Számítástechnika » Programozás » Java-ban hogyan kell adattáblá...

Java-ban hogyan kell adattáblát létrehozni? Mi lehet a hiba( többi lent) ?

Figyelt kérdés

Szóval létre kellene hoznom egy 5 elemű parfűm nevű adattáblát, majd kiszűrnöm a 2011-ben gyártottakat (nyílván nem a kiszűréssel van gondom). Ehhez egy külön osztályban rekordtömböket adtam meg, majd a főosztályban létrehoztam az f2 példányt, ami lényegében egy adattábla kellene hogy legyen a ciklus után. Szóval egy ciklusban megadtam az f2 példány mindegyik rekordtömbjének az elemeit a következőképpen:


parfüm f2 = new parfüm();

System.out.println("Adj meg 5 parfűmöt:");

for (int i = 0; i<5; i++) {

System.out.println(i+1 + ".parfum:");

System.out.print("Összetétel :"); f2.összetevők[i] = beolvas.nextLine();

System.out.print("Név :"); f2.nev[i] = beolvas.nextLine();

System.out.print("Év :"); f2.ev[i] = beolvas.nextInt();

System.out.print("Méret :"); f2.meret[i] = beolvas.nextInt();

System.out.print("Ár :"); f2.ar[i] = beolvas.nextInt();

System.out.println("---------------");

}

System.out.println("A 2011-ben gyártott parfűmök adatai:");

for (int i = 0; i<4; i++) {

if (f2.ev[i]==2011)

System.out.println(i + ".parfum: I " + f2.összetevők[i] + " I " + f2.nev[i] + " I " + f2.ev[i] +" I " + f2.meret[i] + " I " + f2.ar[i] + " I");


A külön fájlban megadott osztály pedig:


public class parfüm {

public String[] összetevők;

public String[] nev;

public int[] ev;

public int[] meret;

public int[] ar;


}


Szintaktia hibám nincs, nem jelez hibát, viszont futás után ahogy bekérem az első elemet, kiakad a program, ezzel a hibaüzenettel:


Exception in thread "main" java.lang.NullPointerException

at labor8_hapakviktor.Labor8_HapakViktor.main(Labor8_HapakViktor.java:91)

C:\Users\lenovo\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1

BUILD FAILED (total time: 2 seconds)


Valaki tudna segíteni mi lehet a probléma. Lehet e így megadni rekordtömb-adattáblát?


2021. dec. 4. 20:13
 1/4 anonim ***** válasza:

Exception in thread "main" java.lang.NullPointerException at abor8_hapakviktor.Labor8_HapakViktor.main(Labor8_HapakViktor.java:91)


ahogy a hibeüzenet is szól: 91. sorban kapsz egy NullPointerException-t


Miért használsz ékezeteket a forráskódban?


Miért tárolsz tömböket a parfüm-ben, parfümök tömbje helyett?

2021. dec. 4. 21:51
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

Köszönöm a segítséget, viszont a pillanaton oldottam meg másképp a feladatot. Először is konstruktort vezettem be az osztálymetódus-fájlban, majd öt record-tömb helyett egyetlen példánytömböt, azaz record-tömböt hoztam létre, amit létrehozott mezőtömbökkel töltöttem fel és így már elvileg működik. Itt lenne a kódom:


String[] O = new String[5];

String[] N = new String[5];

int[] E = new int[5];

int[] M = new int[5];

int[] A = new int[5];

System.out.println("Adj meg 5 parfűmöt:");

for (int i = 0; i<5; i++) {

System.out.println(i+1 + ".parfum:");

System.out.print("Összetétel :"); O[i] = beolvas.nextLine();

O[i] = beolvas.nextLine();

System.out.print("Név :"); N[i] = beolvas.nextLine();

System.out.print("Év :"); E[i] = beolvas.nextInt();

System.out.print("Méret :"); M[i] = beolvas.nextInt();

System.out.print("Ár :"); A[i] = beolvas.nextInt();

System.out.println("---------------");

}


parfüm[] f = new parfüm[5];

for (int i = 0; i<5; i++) {

f[i] = new parfüm(O[i], N[i], E[i], M[i], A[i]);

}

System.out.println("A 2011-ben gyártott parfűmök adatai:");

for (int i = 0; i<4; i++) {

if (f[i].ev==2011)

System.out.println(i + ".parfum: I " + f[i].összetevők + " I " + f[i].nev + " I " + f[i].ev +" I " + f[i].meret + " dl I " + f[i].ar + " ft I");


}


Az osztálymetódus-fájlpedig:


public class parfüm {

public String összetevők;

public String nev;

public int ev;

public int meret;

public int ar;


public parfüm(String o, String n, int e, int m, int a ) {

összetevők = o;

nev = n;

ev = e;

meret = m;

ar = a;

}


Csak az O tömb bekérésénél a második körtől átugorja valamiért az elem beolvasását üres szót hagyva, emiatt olvasatom be mégegyszer. Ha erre találsz logikus magyarázatot megköszönném! :)

2021. dec. 4. 22:14
 3/4 anonim ***** válasza:

At 1.es megjegyzései jogosak. De ami az igazi baj, hogy az osztályodban a tömböket csak deklaráltad, de nem inicializáltad. Hiányzik a


public String[] nev = new String[5];


stb.


Amúgy az i < 4 is rossz a programban.

2021. dec. 4. 22:23
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

#2

már sokkal jobb de az O, N, E, M, A tömbök teljesen fölöslegesek.Elegendő 1-1 változó a tömbök helyett és hívhatod közvetlenül a forban a konstruktort.

2021. dec. 4. 22:29
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!