hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.07. 07:23



Jelenlévő felhasználók

Jelenleg 351 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 351 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: [Java] User input
HozzászólásElküldve: 2017.04.10. 15:31 
Offline
Signore Senior
Avatar

Csatlakozott: 2011.09.09. 17:39
Hozzászólások: 4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
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:

Scanner myInput 
= new Scanner(System.in);


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:

public class App 
{


    public static void main(String[] args) {
        
        try
(Scanner scannerObject = new Scanner(System.in)){
            int i = scannerObject.nextInt();
            System.out.println(i);
        }
        
        catch
(InputMismatchException e) {
            System.out.println("Itt lehetne kezelni a kivételt");
        }
        
    
}
    
}
 


Köszönöm a figyelmet,
következő tutoriálig pedig...
Happy Coding! :)


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole