8. hét Tömbök
Tartalom:
8.1. Tömbök deklarálása,
kezdőértékük beállítása
8.2. Tömbelemek elérése
8.3.
Tömb méretének
meghatározása
8.4.
Objektumtömbök
8.5.
Tömbök tömbjei
8.6.
Tesztkérdések
8.7.
Feladatok
A tömb egy olyan változó, amely több azonos típusú adatot tartalmaz. A tömb hossza a létrehozáskor dől el, és attól kezdve a tömb egy állandó méretű adatszerkezet.
A tömböket egy fiókos szekrényhez lehetne
hasonlítani, amelyekben az egyes fiókokban egy-egy adatot helyezünk el. A
fiókokra a sorszámukkal (A tömbben elfoglalt helye.) hivatkozunk.
A sorszámozást nullával kezdjük! Ha valamelyik
fiók tartalmára szükségünk van, akkor megadjuk, hogy hányadik fiókról van szó és
kiolvassuk a tartalmát.
Példa: (Ha szükségünk van a 100-as számra, akkor a 3-as indexű fiókot kell "kihúzni"!)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 2 | 34 | 100 | 1 | 0 | 5 | 67 | 76 | 99 |
Lehetőségünk van arra is, hogy olyan tömböket hozzunk létre, amelyek tömböket tartalmaznak (tömbök tömbjei).
8.1. Tömbök deklarálása, kezdőértékük beállítása
A tömb deklarálása a többi váltózóéhoz hasonlóan két részből áll: meg kell adni a tömb típusát és a tömb nevét.
Szintaktika:
<elemtípus>[] <tömbAzonosító>; pl. int[] szamok;
A [] tömbképző operátort a tömbAzonosító után is tehetjük.
<elemtípus> <tömbAzonosító>[]; pl. int szamok[];
A deklarálás során nem hoztuk még létre a tömböt, egyelőre csak a referenciának (memóriacímnek) foglaltunk helyet. A tömböt a Javában külön létre kell hozzuk a new operátorral!
Szintaktika:
new elemtípus[<méret>];
pl. new int [10];//Itt egy olyan integer típusú adatelemeket tartalmazó tömböt hoztunk létre, amely 10 db elemet tartalmaz.
A deklarációt és a létrehozást egy lépésben is elvégezhetjük.
Például:
int szamok[] = new int[10] ;
A deklarálás során (inicializáló blokkal) a tömb elemeinek kezdeti értékek is adhatók.
Szintaktika:
<elemtípus>[] <tömbAzonosító> = {<érték0>, <érték1>, ...};
pl. Készítsünk egy String típusú tömböt, amely a hét napjait tartalmazza!
String[] napok = {"Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat", "Vasárnap"};
A tömb egyes elemeire az indexükkel hivatkozhatunk.
Szintaktika:
<tömbAzonosító>[index];
pl. szamok[3] = 2; // A 4. fiókba (3-as indexű) betettük a 2-es számot.
8.3 Tömb méretének meghatározása
Minden tömb objektumnak van egy
length
konstansa, amely megadja a tömb hosszát.
(Egyszerűen azt, hogy hány adat található meg benne?)
tömbAzonosító.length
pl. (A napok tömbnél, amely a hét napjait tartalmazza.)
System.out.println(napok.length); >> 7
A tömbökben tárolhatunk referencia típusú elemeket is. A létrehozásuk olyan mint a primitív típusú elemeket tartalmazó tömböké.
Nézzünk meg egy egyszerű példát, ahol a tömbben három String objektumot tárolunk:
A tömb elemeinek a bejárásához használhatunk egy speciális programozói eszközt, az un. for-each ciklust.
Szintaktika:
for(<típus> <változó> : <objektum>)
<utasítás vagy blokk>
Példa:
A tömbök tartalmazhatnak tömböket, tetszőleges mélységben egymásba ágyazva.
Szintaktika:
Deklarálás: <elemtípus>[][] ... [] <tömbAzonosító>;
Létrehozás: new <elemtípus> [méret0][méret1]...[méretn-1];
Tömb elemeinek elérése: <tömbAzonosító> [index0][index1]...[indexn-1]
Példa: (Egy tömbben elhelyezünk másik 3 tömböt.)
Ezt úgy képzelhetjük el a legegyszerűbben, mintha egy "három soros két oszlopos táblázatban" helyeznénk el az adatokat:
Egy | Megérett a meggy. |
kettő | Csipkebokor vessző. |
Három | Te leszel a párom. |
Írjuk ki a konzolra a tömbből a "Te leszel a párom szöveget"!
A megadott szöveg a "táblázat" 3. sorának 2. oszlopában található, az indexelése pedig a következő lesz [2] [1].
Figyelem: Ne felejtsük el, hogy az indexelés 0-val kezdődik!
8.6. Tesztkérdések
8.7.1 Írjál programot, amely a következő tartalmú tömböt
hozza létre, majd ki is írja a képernyőre!
0 1 2
3 4 4
0 0 0 (megoldás)
8.7.2 Készíts programot, amely egy 20 elemű tömböt feltölt 'a' karakterekkel, majd a tömb minden 2. elemét kicseréli 'b' karakterre, majd kiírja egymásmellé az elemeket, szóközzel elválasztva! (megoldás)
8.7.3 Készíts programot, amely feltölt 1-től 10-ig véletlen valós számokkal egy 6x6-os tömböt, majd megjeleníti a tömb tartalmát! Írja ki a program a számok átlagát is! (megoldás)
8.7.4. Írjál programot, amely az 5x5-ös egységmátrixot
hozza létre!
(Az egységmátrixban a főátlóbeli elemek 1-t, míg az
ezen kívüli elemek 0-t tartalmaznak.)
minta:
(megoldás)
8.7.5. Készíts programot, amely bekér a billentyűzetről 5 db számot és elhelyezi egy megfelelő tömbben! A program írja is ki a tömb tartalmát a képernyőre, valamint jelenjen meg külön a legkisebb szám is. (megoldás)