Online kurz programování Java 4 (ZDARMA) – vstup z klávesnice
Pokračování seriálu o Java programování. Javu vám vysvětlíme tak jasně a jednoduše, jako by vám jí vysvětloval kamarád u piva! Nepotřebujete nic umět do začátku a není potřeba nic instalovat. Vaše programy spustíte rovnou na této stránce.

Obsah kurzu
Vstup z klávesnice
Aby měl program s čím pracovat, mohl by se na něco zeptat uživatele. Jak to udělat? Před spuštěním následujícího programu přepněte na
abyste mohli zadávat vstup z klávesnice (pokud to neuděláte, kód vyhodí chybu!).
- Jste na smartphonu? Kód i výsledek v černém okně můžete prstem posouvat doleva a doprava, abyste viděli celé řádky.
- Jste na iPhone, iPadu? Jděte do Nastavení>Safari>Nesledovat napříč stránkami a vypněte tuto funkci.

Pojďme si teď tenhle kód rozebrat.
import java.util.Scanner;
Abychom mohli použít třídu Scanner (která je součástí Javy), musíme jí importovat, tedy oznámit počítači, že teď budeme tuhle třídu používat v našem programu. Třída se nachází v balíku (package [pekidž]) java.util. Tak tedy:
import– importovat třídujava.util– v balíkujava.util…Scanner– … je třída s názvemScanner
Všimněte si, že příkaz import jsme dali hned na začátek programu, před všechno ostatní. Teď potřebujeme podle třídy (plánu na stroj) vytvořit nový objekt (stroj). Uděláme to takhle:
Scanner vstupKlavesnice = new Scanner(System.in);
Když tento řádek zobecníme, bude to vypadat takhle:
Třída můjNázevNovéhoObjektu = new Třída(argument);
Takto se tvoří ze tříd všechny nové objekty. Možná vás napadne, proč je tam název objektu Scanner dvakrát? Nestačilo by jednou? Důvod je ten, že objekt vytváříme podobně jako jsme deklarovali proměnnou. Vzpomínáte jak jsme to dělali? Třeba takhle:
int x = 5;
Všimněte si, že ten příkaz říká: bude to typu int a proměnná se bude jmenovat x. Podobně naším kódem říkáme: bude to podle třídy Scanner a objekt se bude jmenovat vstupKlavesnice. A pak přijde samotné vytvoření nového objektu. (Poznámka: vstupKlavesnice je ve skutečnosti proměnná, ve které není uložený přímo samotný objekt, ale jen odkaz na adresu objektu v paměti. Detaily pochopíme lépe v dalších lekcích.)
A co dělá System.in v závorkách? Jak jsme si řekli v 1. lekci online kurzu Java, jde o argument čili parametr, který „vstupuje“ do třídy. Tímto parametrem říkáme, že nový objekt bude číst z konzole (to je to černé okénko, kam uživatel pomocí klávesnice může něco napsat, když se ho náš program zeptá), in je zkratka od input (vstup). Vytvořili jsme tedy proměnnou vstupKlavesnice, ve které je odkaz na nový objekt, a nyní použijeme metodu tohoto objektu (tedy jeho funkci, to co objekt umí dělat).
String jmeno = vstupKlavesnice.nextLine();
Použili jsme metodu nextLine(), která umožňuje uživateli napsat řádek textu. To, co uživatel zadá, se uloží do proměnné jmeno typu String. Třída Scanner má ovšem mnohem více metod. Tady jsou některé základní metody třídy Scanner:
| Metoda | Jaký typ dat může uživatel vložit |
|---|---|
| nextByte() | byte |
| nextShort() | short |
| nextInt() | int |
| nextLong() | long |
| nextFloat() | float |
| nextDouble() | double |
| nextBoolean() | boolean |
| nextLine() | String, 1 řádek textu (čte vstup až po ukončení řádku, např. Enter) |
| next() | String, 1 slovo (čte vstup až po ukončení slova, např. do první mezery) |
Poznámka: nextLine() čte vstup až po line separator [lajn seprejtr] (oddělovač řádku), kam patří i Enter. Naproti tomu next() čte vstup až po takzvanou whitespace [uajtspejs], kam patří nejen mezera, ale i např. tabulátor. Po ukončení čtení vstupu pomocí next() zůstane kurzor tam, kde je (na stejném řádku). U obou příkazů může uživatel potvrdit vstup pomocí Enter, stejně jako u všech ostatních metod z tabulky. Když se uživatel bude snažit zadat něco jiného, než umí zpracovat použitá metoda, program vyhodí výjimku (což je určitý typ chyby).
Proměnnou jmeno jsme pak v našem programu použili ve výpisu na obrazovku. Pomocí + se dají spojit řetězce dohromady. Například takhle:
"Vase jmeno je: " + jmeno + ", a vas vek je: " + vek + "."
Proměnné jsou bez uvozovek, řetězce s uvozovkami.
Jako cvičení si zkuste přepsat náš kód tak, abyste použili všechny metody Scanner, které jste se naučili v této lekci.
Pokračujte dalším dílem: Online kurz programování Java 5 – verze, instalace JDK a IDE.
Obrázky: Unsplash: Elevate, DirectGlow LLC.
Nerozumím jaký je rozdíl mezi next a nextLine. Když jsem z kódu na této strance odstranil Line, tak kód stejně čekal na Enter a mezera ani tabulátor neodsouhlasili vloženou hodnotu, aby kód pokračoval.