Online kurz programování Java 4 (ZDARMA) – vstup z klávesnice

Pokra­čo­vá­ní seri­á­lu o Java pro­gra­mo­vá­ní. Javu vám vysvět­lí­me tak jas­ně a jed­no­du­še, jako by vám jí vysvět­lo­val kama­rád u piva! Nepo­tře­bu­je­te nic umět do začát­ku a není potře­ba nic insta­lo­vat. Vaše pro­gra­my spus­tí­te rov­nou na této stránce.

Chlap­ci dis­ku­tu­jí o pro­gra­mo­vá­ní v jazy­ku Java.

Obsah kurzu

Vstup z klávesnice

Aby měl pro­gram s čím pra­co­vat, mohl by se na něco zeptat uži­va­te­le. Jak to udě­lat? Před spuš­tě­ním násle­du­jí­cí­ho pro­gra­mu pře­pně­te na abys­te moh­li zadá­vat vstup z klá­ves­ni­ce (pokud to neu­dě­lá­te, kód vyho­dí chybu!).

  • Jste na smart­pho­nu? Kód i výsle­dek v čer­ném okně může­te prs­tem posou­vat dole­va a dopra­va, abys­te vidě­li celé řádky.
  • Jste na iPho­ne, iPa­du? Jdě­te do Nastavení>Safari>Nesledovat napříč strán­ka­mi a vypně­te tuto funk­ci.
import java.util.Scanner; public class MyClass { public static void main (String args[]) { Scanner vstupKlavesnice = new Scanner(System.in); System.out.println("Zadejte svoje jmeno a stisknete Enter:"); String jmeno = vstupKlavesnice.nextLine(); System.out.println("Vase jmeno je: " + jmeno); } }

Pojď­me si teď tenhle kód rozebrat.

import java.util.Scanner;

Abychom moh­li pou­žít tří­du Scanner (kte­rá je sou­čás­tí Javy), musí­me jí impor­to­vat, tedy ozná­mit počí­ta­či, že teď bude­me tuhle tří­du pou­ží­vat v našem pro­gra­mu. Tří­da se nachá­zí v balí­ku (pac­kage [peki­dž]) java.util. Tak tedy:

  • import – impor­to­vat třídu
  • java.util – v balí­ku java.util
  • Scanner – … je tří­da s názvem Scanner

Všim­ně­te si, že pří­kaz import jsme dali hned na začá­tek pro­gra­mu, před všech­no ostat­ní. Teď potře­bu­je­me pod­le tří­dy (plá­nu na stroj) vytvo­řit nový objekt (stroj). Udě­lá­me to takhle:

Scanner vstupKlavesnice = new Scanner(System.in);

Když ten­to řádek zobec­ní­me, bude to vypa­dat takhle:

Třída můjNázevNovéhoObjektu = new Třída(argument);

Tak­to se tvo­ří ze tříd všech­ny nové objek­ty. Mož­ná vás napad­ne, proč je tam název objek­tu Scanner dva­krát? Nesta­či­lo by jed­nou? Důvod je ten, že objekt vytvá­ří­me podob­ně jako jsme dekla­ro­va­li pro­měn­nou. Vzpo­mí­ná­te jak jsme to děla­li? Tře­ba takhle:

int x = 5;

Všim­ně­te si, že ten pří­kaz říká: bude to typu int a pro­měn­ná se bude jme­no­vat x. Podob­ně naším kódem říká­me: bude to pod­le tří­dy Scanner a objekt se bude jme­no­vat vstupKlavesnice. A pak při­jde samot­né vytvo­ře­ní nové­ho objek­tu. (Poznám­ka: vstupKlavesnice je ve sku­teč­nos­ti pro­měn­ná, ve kte­ré není ulo­že­ný pří­mo samot­ný objekt, ale jen odkaz na adre­su objek­tu v pamě­ti. Detai­ly pocho­pí­me lépe v dal­ších lekcích.)

A co dělá System.in v závor­kách? Jak jsme si řek­li v 1. lek­ci onli­ne kur­zu Java, jde o argu­ment čili para­me­tr, kte­rý „vstu­pu­je“ do tří­dy. Tím­to para­me­t­rem říká­me, že nový objekt bude číst z kon­zo­le (to je to čer­né okén­ko, kam uži­va­tel pomo­cí klá­ves­ni­ce může něco napsat, když se ho náš pro­gram zeptá), in je zkrat­ka od input (vstup). Vytvo­ři­li jsme tedy pro­měn­nou vstupKlavesnice, ve kte­ré je odkaz na nový objekt, a nyní pou­ži­je­me meto­du toho­to objek­tu (tedy jeho funk­ci, to co objekt umí dělat).

String jmeno = vstupKlavesnice.nextLine();

Pou­ži­li jsme meto­du next­Li­ne(), kte­rá umož­ňu­je uži­va­te­li napsat řádek tex­tu. To, co uži­va­tel zadá, se ulo­ží do pro­měn­né jmeno typu String. Tří­da Scanner má ovšem mno­hem více metod. Tady jsou někte­ré základ­ní meto­dy tří­dy Scanner:

Meto­daJaký typ dat může uži­va­tel vložit
next­By­te()byte
next­Short()short
nex­tInt()int
nextLong()long
next­Flo­at()flo­at
nex­t­Double()double
next­Bo­o­le­an()boo­le­an
next­Li­ne()String, 1 řádek tex­tu (čte vstup až po ukon­če­ní řád­ku, např. Enter) 
next()String, 1 slo­vo (čte vstup až po ukon­če­ní slo­va, např. do prv­ní mezery)

Poznám­ka: nextLine() čte vstup až po line sepa­ra­tor [lajn seprej­tr] (oddě­lo­vač řád­ku), kam pat­ří i Enter. Napro­ti tomu next() čte vstup až po tak­zva­nou whi­te­spa­ce [uajt­spejs], kam pat­ří nejen meze­ra, ale i např. tabu­lá­tor. Po ukon­če­ní čte­ní vstu­pu pomo­cí next() zůsta­ne kur­zor tam, kde je (na stej­ném řád­ku). U obou pří­ka­zů může uži­va­tel potvr­dit vstup pomo­cí Enter, stej­ně jako u všech ostat­ních metod z tabul­ky. Když se uži­va­tel bude sna­žit zadat něco jiné­ho, než umí zpra­co­vat pou­ži­tá meto­da, pro­gram vyho­dí výjim­ku (což je urči­tý typ chyby).

Pro­měn­nou jmeno jsme pak v našem pro­gra­mu pou­ži­li ve výpi­su na obra­zov­ku. Pomo­cí + se dají spo­jit řetěz­ce dohro­ma­dy. Napří­klad takhle:

"Vase jmeno je: " + jmeno + ", a vas vek je: " + vek + "."

Pro­měn­né jsou bez uvo­zo­vek, řetěz­ce s uvozovkami.

Jako cvi­če­ní si zkus­te pře­psat náš kód tak, abys­te pou­ži­li všech­ny meto­dy Scanner, kte­ré jste se nau­či­li v této lekci.

Pokra­čuj­te dal­ším dílem: Onli­ne kurz pro­gra­mo­vá­ní Java 5 – ver­ze, insta­la­ce JDK a IDE.

Obráz­ky: Unspla­sh: Ele­va­te, Direct­Glow LLC.

NOVÉ ČLÁNKY E‑MAILEM?
Při­hlaš­te se k odběru 
Sdí­lej­te článek
Jeden komentář

Přidejte komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

13 − 9 =