hlmod.hu https://hlmod.hu/ |
|
[Java] User input https://hlmod.hu/viewtopic.php?f=127&t=27543 |
Oldal: 1 / 1 |
Szerző: | Silent [ 2017.04.10. 15:31 ] |
Hozzászólás témája: | [Java] User input |
Sziasztok! 7) Java - Core Programming - User Input Kicsit megkésve, de már itt is vagyok egy következő Java fejlesztési tutoriállal. Mielőtt "komolyabb vizekre eveznénk", egy utolsó Core Programming fejezet következik, ami a felhasználói "beavatkozásról", a bevitelről fog szólni. Aki korábban fejlesztett már C#-ban, az csodálkozhat, hogy miért kell erről külön említést tenni, hiszen egyetlen metódussal le lehet rendezni egy sor beolvasását (C# Console.ReadLine() ). A Java is rendelkezik természetese alapvető olvasásra utaló metódusokkal, de ez korántsem arra való amire azt gondoljuk. Ehelyett egy úgynevezett Scanner osztályt használunk a sorok beolvasására. Ez a Scanner osztály a java.util csomagban található meg, tehát használatához importolnunk kell. Kód: import java.util.Scanner; Tanulni legegyszerűbben példákon keresztül lehet, ennek eleget téve nézzünk meg egy Integer típusú bevitelt. Először is egy Scanner típusú változót kell deklarálnunk, ami egy úgymond referenciaként fog mutatni a példányosított objektumunkra. Kód:
A Scanner konstruktora egyfajta típust vár el, ami az elvégzendő műveletektől függ. Jelen esetben egy konzolos Input Streamre lesz szükségünk, szóval a System.in tökéletes lesz, ami az IO csomag BufferedStreamerje, stringként kiíratva valami ilyesmit kell kapjunk: Kód: java.io.BufferedInputStream@1b6d3586 Az új Scanner objektumunknak többféle függvénye is lesz, nekünk a nextInt() kell, mivel Integert várunk. Kód: int number = myInput.nextInt(); Miután eltároltuk ezt egy változóban, könnyen ki is írathatjuk, hogy megbizonyosodjunk sikerességünkről. Kód: System.out.println(number); Persze nem csak Integert várunk el általában, ezért többféle függvényt is írtak erre, a teljes listáért katt ide. A műveletek elvégzése végén pedig le is kell zárnunk ezt az input streamet, mielőtt másik streamet kezdenénk, ezt megtehetjük a Scanner osztály close() függvényével. Kód: myInput.close(); Ez eddig egyszerű volt, szinte túl egyszerű. Mi van ugyanis akkor, ha mi egy életkort szeretnénk beolvasni, ami egy Integer, de a felhasználó félreír valamit és egy betű is belekavarodik? Igen, egy InputMismatchException kivételt kapunk, ami meg is állítja a programunk futását. Többféle módon is lehet ezt kezelni, a legegyszerűbb és egyben legmodernebb módszert mutatnám be, ami a try-with-resources körbekerítés. JRE 1.7 alatt, ha jól emlékszem ez sajnos nem támogatott, ott a mezei try-catch megoldással kell elvégezni ezt a műveletet. Try with resources utasítás.. A megszokott try-catch kivételkezeléssel ellentétben, itt a try részben egy, vagy akár több erőforrást is deklarálhatunk. Erőforrásnak minősülnek azok az objektumok, amiket le kell zárnunk használat után. Erre jó a try-with-resources, ami lezárja nekünk a lezárható objektumokat. Lezárhatónak minősül minden olyan objektum, amelyik implementálja a java.lang.AutoCloseable (és ezzel a java.lang.Closeable) interfészt. (Interfészekről majd később..jóval később) Ez alapján a kódunk: Kód:
Köszönöm a figyelmet, következő tutoriálig pedig... Happy Coding! :) |
Oldal: 1 / 1 | Minden időpont UTC+02:00 időzóna szerinti |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |