Bevezetés a Java programozásba Multimédiafejlesztő tanfolyam 3. foglalkozás Készítette: Csekéné Molnár Erika, 1. Input/output kezelés 1. 2. 3. 4. 5. Kivételkezelés Adatbeolvasása parancssorból Stream (csatorna) Adatbeolvasás konzolról Feladatok 1.1 Kivételkezelés • Lényege: A programban fellépő futásidejű hibák,

Download Report

Transcript Bevezetés a Java programozásba Multimédiafejlesztő tanfolyam 3. foglalkozás Készítette: Csekéné Molnár Erika, 1. Input/output kezelés 1. 2. 3. 4. 5. Kivételkezelés Adatbeolvasása parancssorból Stream (csatorna) Adatbeolvasás konzolról Feladatok 1.1 Kivételkezelés • Lényege: A programban fellépő futásidejű hibák,

Bevezetés a Java
programozásba
Multimédiafejlesztő tanfolyam
3. foglalkozás
Készítette: Csekéné Molnár Erika,
2009
1. Input/output kezelés
1.
2.
3.
4.
5.
Kivételkezelés
Adatbeolvasása parancssorból
Stream (csatorna)
Adatbeolvasás konzolról
Feladatok
1.1 Kivételkezelés
• Lényege: A programban fellépő futásidejű hibák, vagy a program
normál logikájához képest különleges, attól eltérő helyzetek
kezelése.
• Eszköze: A try blokkban kiváltott kivételeket az utána következő
catch blokk, vagy blokkok kezelik le:
try {
utasítások;
}
catch(Típus változó) { utasítások; }
(A catch ágban a "paraméterként" megadott típus határozza meg, hogy
mely kivételeket képes lekezelni.)
1.2 Adatbeolvasás parancssorból
Egész szám beolvasása (Negyzet.java)
try{
szam = Integer.parseInt(args[0]);
}catch (NumberFormatException e){
System.out.println("Egész számot adj meg!");
}
String args[ ]: a parancssorban megadott paraméterek, String típusú
tömbben tárolva
Integer.parseInt(p): a paraméterként megadott String típusú adatot
int típusúvá alakítja
NumberFormatExeption: nem megfelelő típusú (int) paraméter megadása
esetén fellépő hiba
Futtatáskor: java Negyzet 4
Feladat: Írj programot, amely két parancssorból megadott egész számot
ad össze! (Osszead.java )
1.3 Stream (csatorna)
• Definíció: A csatorna adatok sorozata, egyik végén befelé, a
másik végén kifelé "folynak" az adatok.
• Megvalósítás: csatornákat is osztályokkal valósítjuk meg, azaz
minden csatorna-típusnak egy-egy osztály felel meg, amelyek a
java.io csomagban találhatók.
• Típusai:
– Csatornán folyó adatok iránya szerint: bemeneti (pl.: billentyűzet,
fájl… stb.) és kimeneti (pl.: képernyő, fájl… stb.) csatornák.
– Csatornán folyó adatok típusa szerint: bájt- és karaktercsatorna
• Alapcsatorna osztályok:
Típus\Irány
Bemeneti
Kimeneti
Bájt
InputStream
OutputStream
Karakter
Reader
Writer
1.4 Adatbeolvasás konzolról
• Importálás: A program első sorába importálni kell a java.io csomagot.
import java.io.*;
• Csatorna létrehozása és megnyitása: egy reader nevű objektum
létrehozása, amely hozzá van rendelve a standard inputhoz, ahol
pufferelt adatbeolvasást hajtunk végre.
BufferedReader reader = new BufferedReader(new
InputStreamReader (System.in));
• Adatbeolvasás kivételkezeléssel: a reader objektum
readLine() eljárása olvas be egy String típusú értéket, amit
egész számmá kell alakítani.
try {
sor = reader.readLine();
szam = Integer.parseInt(sor);
}catch(IOException e){ }
Feladat.: A beolvasatott számnak írjuk ki a négyzetét! (Negyzetszam.java)
1.5 Feladatok
1.
Írj programot, amely parancssorból megadott 3 szám
közül eldönti, melyik a legkisebb ill. legnagyobb!
Használd a Math osztály min és max függvényét és
használj saját statikus függvényeket! (MinMax.java)
2.
Írj programot, amely bekér a felhasználótól öt egész
számot és növekvő sorrendbe kiírja! Használj tömböt a
számok tárolásához és készíts statikus metódusokat!
(Rendez.java)
2. Állománykezelés
1.
2.
3.
4.
5.
6.
Fájlokról általában
Bináris fájlok
Karakteres fájlok
Szöveges fájlok
Szöveges fájl feldolgozása
StringTokenizer osztály
2.1 Fájlokról általában
• Az állomány is stream (csatorna): bemeneti és kimeneti
adatforrás is lehet fájl.
• Kell a java.io csomag, importálni kell a program elején
• Állomány típusok:
– Bináris file: 8 bites egységenként történik a feldolgozás, szám
típusú adatokat tartalmaz
– Karakteres file: 16 bites egységenként, azaz karakterenként
történik a feldolgozás
– Szöveges file: részenként (pl. soronként, szavanként) történik a
feldolgozás
• Műveletek:
– File megnyitása: csatorna létrehozása és megnyitása egy
lépésben a new utasítás segítségével
– Műveletek: olvasás: read(), readLine(), írás: write(),
print(), println()
– File lezárása: close()
2.2 Bináris fájlok
• Bemenethez használjuk a FileInputStream osztályt.
FileInputStream bemenet =new FileInputStrem(„feldolgozando.txt”);
…
int szam = bemenet.read();
…
bemenet.close();
• Olvasás vége, ha file vége -1.
• Kimenethez használjuk a FileOutputStream osztályt.
FileOutputStream kimenet=new FileOutputStream(„irasra.txt”);
…
kimenet.write(i);
…
kimenet.close();
Feladat: Írj programot, amely megnyitja olvasásra a szamok.txt állományt,
kiírja tartalmának kódjait az outputra, majd feltölti az üres cel.txt fájt 1-től
150-ig kódolt karakterekkel! (Binaris.java)
2.3 Karakteres fájlok
• Bemenethez használjuk a FileReader osztályt.
FileReader bemenet =new FileReader(„feldolgozando.txt”);
…
int c = bemenet.read();
…
bemenet.close();
• Olvasás vége, ha file vége -1.
• Kimenethez használjuk a FileWriter osztályt.
FileWriter kimenet=new FileWriter(„irasra.txt”);
…
kimenet.write(c);
…
kimenet.close();
Feladat: Írj programot, amely a forras.txt fájl tartalmát átmásolja a
cel.txt fájlba! (Karakteres.java)
2.4 Szöveges fájlok
• Részenkénti feldolgozás: praktikus, ha egy file tartalmát nem csak
karakterenként vagy byte-onként érhetjük el, hanem egy nagyobb szakaszt
egyben is.
• Pufferelt olvasás lényege, hogy a stream egy szakaszát egy pufferbe
olvassa. A puffer tartalma egy művelettel elérhető.
• Beolvasás soronként a "\n" jelig.
• Fájl vége: null.
• Osztályok:
– bemenethez: BufferedReader, ami képes egy sort egy művelettel
beolvasni, pufferbe olvas, tartalma egy művelettel elérhető.
– kimenethez: PrintWriter, ami a kiírandó adatot karakterenként írja a
kimeneti streambe.
2.5 Szöveges fájl feldolgozása
• Beolvasás:
BufferedReader bemenet =
new BufferedReader(new FileReader(„bemenet.txt”));
…
String sor = bemenet.readLine();
…
bemenet.close();
• Kiírás:
PrintWriter kimenet =
new PrintWriter( new FileWriter(„kimenet.txt”));
…
kimenet.println(„Serteperte, felseperte”);
…
kimenet.close();
Feladat: Írj programot, amely a torp.txt fájl sorait megsorszámozva
átírja a cel.txt fájlba! (Szoveges.java)
2.6 StringTokenizer osztály
• String részekre bontását teszi lehetővé
• Importálni kell a java.util csomagot
• Feldarabolt szöveg létrehozása, ahol megadható az
elválasztó karakter:
StringTokenizer st = new StringTokenizer(String szöveg,
String elválasztókarakter);
• Alapértelmezés a szóköz és a fehérszóközök (például:
\t\n\r\f )
• Metódusai:
– st.hasMoreTokens() Igazat ad vissza ha van még rész
– st.nextToken() A következő tokent adja vissza értékül
– st.countTokens() Visszadja a hátralévő részek számát
2.7 Feladat
Írj programot, amely beolvassa a torp.txt fájlt,
amelyben soronként egy törp neve és
számértékek vannak, szóközzel elválasztva.
Hozzunk létre egy torpok.txt állományt,
amelyben kiírjuk a törp nevét és a hozzá tartozó
számok összegét! (Torpok.java)