Hogyan lehet több adatot egységesíteni javaban?
Kicsit zavaros a leírás. Minden árucikk neve után F betű van? Vagy csak néhol, és az választja el a bevásárlókocsik tartalmát? Ha utóbbi, akkor a kocsikban lévő árucikkeket mi választja el?
Arról nem is beszélve, hogy ebben a formában eleve hülyeség a feladat, mert ha bármelyik árucikk nevében F betű van, akkor már nem lehet jól megcsinálni (legfeljebb akkor, ha az áruk nevében csak kisbetűket használsz, de akkor is elég fura megoldás).
Én úgy csinálnám, hogy az egyes kocsik tartalmát egy-egy listában tárolnám, a kocsikat pedig egy listákat tartalmazó listába rendezném.
Így tehát:
carts.get(0): az első kocsi
carts.get(0).get(0): az első kocsiban levő első árucikk
Köszi a választ!
Értem a gondolatmenetedet, de az a helyzet, hogy sajnos elég hülye vagyok ehhez, konkrétabban letudnád írni nekem? :)
Például, bemásolom ide, hogy eddig hol tartok eddig és hogy ezt hogyan kéne módosítani?
public class vasarlo {
public static class vasarlas{
int vasarlo;
String aruk;
}
az alábbi a main-be van:
ArrayList<vasarlas> lista = new ArrayList<>();
ArrayList<kosar> lista2 = new ArrayList<>();
File f = new File("penztar.txt");
Scanner sc = new Scanner(f);
int vasarlo = 0;
while(sc.hasNextLine()) {
String sor = sc.nextLine();
if(sor.equals("F")){
vasarlo++;
vasarlas vasarlo1 = new vasarlas();
vasarlo1.vasarlo = vasarlo;
lista.add(vasarlo1);
}
else {
vasarlas vasarlo1 = new vasarlas();
vasarlo1.aruk = sor;
}
}
Először is hibás a kód. A vasarlas osztály aruk mezője egy String, tehát csak egyetlen áru nevét képes eltárolni. Te az else ágban ezt mindig felülírod, amíg van a vásárláshoz kapcsolódó új áru, tehát végül mindig csak a legutolsó áru kerül bele. Az aruk mező tehát egy Stringeket tartalmazó ArrayList kellene, hogy legyen, és ehhez adnád hozzá a beolvasott árukat.
A vasarlas osztályt én feleslegesnek érzem. Van benne egy vasarlo mező, ami egy indexet tárol, illetve egy aruk mező, ami, mint már írtam, lista kellene, hogy legyen. Én a lista változót egy listákat tartalmazó listaként definiálnám, tehát:
List<List<String>> lista = new ArrayList<List<String>>();
Ebben a "belső" lista lenne az, ami most vasarlo1.aruk néven fut.
A lista2 változó felesleges, mert csak definiálod, de utána nem használod.
Végül az elnevezésekről (ebbe már nem hiszem, hogy belekötnének, de ha esetleg ezzel szeretnél foglalkozni, hasznos lehet). Egy listának nem a legjobb név a "lista", mert a változónévnek azt kell megmutatnia, hogy mit tárolunk benne, tehát itt pl. a vasarlasok vagy a kosarak jobb név lenne. Az osztályok nevét pedig nagybetűvel szokás kezdeni Javában, így a vasarlas osztály helyesebb neve Vasarlas lenne, már ha ragaszkodsz ahhoz, hogy itt egy külön osztályt használj.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!