Tipični programi delujejo s podatki, ki jih mora uporabnik vnesti in izpisati. V tem priročniku raziskujemo, kako lahko v Java obdeluješ vnose uporabnikov in učinkovito oblikuješ izhode. Obstajajo različni načini za zbiranje ali zagotavljanje informacij. Pri tem je pomembna razlika med izhodi na konzoli in napakami. Prav tako se naučiš, kako lahko učinkovito prebereš podatke, bodisi preko konzole bodisi preko grafičnih uporabniških vmesnikov.
Najpomembnejši vpogledi
- Java ponuja več načinov za obravnavo vnosa in izhoda podatkov.
- Pomembno je ločiti izhode in napake.
- Scanner je koristno orodje za branje uporabniških vhodov.
Osnovni izhod s System.out
Prvi korak pri delu z izhodi v Javi je obravnava System.out, ki predstavlja privzeti izhod. S razredom PrintStream, ki predstavlja System.out, lahko pošiljaš izhode na konzolo.
Za ustvarjanje besedilnega izliva lahko preprosto uporabljaš System.out.print ali System.out.println. println konča vrstico po izhodu, medtem ko print tega ne stori. Če torej želiš, da se naslednji izhod izvede v isti vrstici, uporabi print.

Program lahko zaženeš na naslednji način:
Ta izhod bo prikazan na konzoli, lahko pa prilagodiš program za izpise dodatnih informacij.
Napake z System.err
Za izhod napak je priporočljivo uporabiti System.err. To prinaša prednost, da so napake in redni izhodi jasno ločeni. Napake je mogoče vizualno izpostaviti, na primer z uporabo druge barve na konzoli (pogosto rdeče).
Ko pride do napake, lahko z System.err.print ali System.err.println izpišeš specifično napako:

Tukaj je primer napake:
Z ločitvijo rednih izhodov in napak povečuješ berljivost in sledljivost izhodov v svojem programu.
Vnosi s System.in in Scanner
Za pridobitev vhodov uporabnika uporabljamo System.in. Priporočljivo je, da uporabimo razred Scanner iz paketa java.util. Scanner poenostavi branje podatkov, saj samodejno prepozna različne tipe podatkov in vrne vhod kot niz.
Najprej moraš uvoziti Scanner:

Nato lahko ustvariš instanco Scannerja in ji preneseš System.in:
Zdaj imaš možnost brati vnose v svojem programu.
Zajetje uporabniških vhodov
Za pridobitev podatkov od uporabnika lahko uporabiš nextLine(). To omogoča zajem celotne vrstice kot niza. Tipičen primer bi bil vnos starosti uporabnika.
Tukaj je primer za vnos uporabnika:

V tem primeru je uporabnik pozvan, da vnese svojo starost, program pa nato vrne vneseno informacijo.
Uporabniške interakcije z grafičnimi dialogi
Če želiš uporabiti grafični uporabniški vmesnik (GUI), lahko uporabiš razred JOptionPane iz paketa javax.swing. To ti omogoča zajem vhodov v standardnem dialognem oknu, kar je lahko nekoliko bolj prijazno do uporabnika.

To prikaže grafični dialog, v katerem lahko uporabnik vnese svojo starost.
Validacija uporabniških vhodov
Pomembno je, da validiraš vnose, ki prihajajo od uporabnika. Moraš zagotoviti, da je starost v sprejemljivi obliki, na primer kot celo število. To lahko dosežeš, če poskusiš pretvoriti niz v številko in delaš z izjemami.

Z implementacijo teh validacij zaščitiš svoj program pred nepričakovanimi vnosi.
Povzetek – optimizacija vnosa in izliva v Javi
Sedaj si spoznal osnovne koncepte vnosa in izliva v Javi. Ločevanje med standardnimi izhodi in napakami je osnovno za ustvarjanje jasnosti v komunikaciji programa. Poleg tega ponuja uporaba Scannerja in možnost implementacije grafičnih dialogov fleksibilne rešitve za vnos podatkov.
Pogosto zastavljena vprašanja
Kateri razred uporabim za standardni izhod?Uporabiš System.out, da prikažeš izhode v oknu konzole.
Kako lahko izpisujem napake?Uporabi System.err za izhod napak in jih loči od rednih izhodov.
Kako zajamem uporabniške vnose na konzoli?Scanner iz java.util je idealen za zajem uporabniških vhodov iz System.in.
Ali lahko uporabim grafične vnosne dialoge?Da, preko JOptionPane iz javax.swing lahko uporabiš grafične dialoge za vnos.
Ali moram validirati uporabniške vnose?Da, validacija vhodov je pomembna, da se izogneš napakam in nepričakovanim vhodom.