Práce se standardním formátovaným vstupem a výstupem
Při běhu programu musí existovat možnost zadávání vstupních dat (vstupní parametry pro výpočet) i možnost práce s výstupními daty (výsledky výpočtů). Hovoříme o terminálovém vstupu a výstupu. Upozorněme, že standardní formátovaný vstup a výstup nejsou v Javě na rozdíl od jazyka C++ určeny pro vážnou práci, ale pouze pro výukové účely. Java totiž disponuje grafickým rozhraním umožňujícím provádět vstup/výstup údajů s využitím vizuálních komponent, např. textboxů, seznamů, atd. Práce s terminálovým vstupem je v Javě poněkud komplikovanější než v jazyce C++.Nástroje pro práci se standardním vstupem a výstupem se nacházejí v balíku java.io. Chceme -li pracovat se standardním vstupem a výstupem, použijeme
import java.io.*;
Pro práci se standardním formátovaným vstupem v Javě existují objekty System.in a System.out. Objekt System.in realizuje standardní vstup, nejčastěji čtením hodnot z klávesnice. System.out je objekt, který se používá pro zobrazování výstupních údajů na monitoru.
Formátovaný výstup
Pro formátovaný výstup je používán objekt System.out. S použitím metody print() můžeme provést vytisknutí řetězce na aktuální pozici v řádku. Pokud se na výstup dostane hodnota jiného datového typu než řetězec, je provedena vynucená konverze na řetězec.int a=10;
int b=20;
System.out.print(a);
System.out.print(b);
System.out.print(Ahoj);
Na výstupu se objeví: 1020Ahoj. Na rozdíl od jazyka C++ není možno hodnoty na výstupu nijak formátovat, tj. např. stanovit počet desetinných míst.
Chceme -li zřetězit hodnoty na výstupu, tj. vytisknout v jednom kroku více údajů, použijeme operátor +. Můžeme vzájemně sčítat hrušky s jablky, tj. Jak řetězce, tak i proměnné primitivních datových typů. Použijeme
System.out.print (a=+a+ b=+b+ Ahoj);
obdržíme na výstupu:a=10 b=20 Ahoj. V řetězci se mohou vyskytnout i escape sekvence,uveďme dvě nejčastěji používané:
Příkazy
System.out.print (a=+a+\n+b=+b+\n Ahoj);
System.out.print (jak+\t+se+\tmate);
vytiskne na obrazovku
a=10
b=20
Ahoj
jak se mate
Stejného efektu dosáhneme za použití metody println().
System.out.println(a=+a);
System.out.println(b+b);
System.out.println(jak+\t+se+\tmate);
Standardní formátovaný vstup
Práce s formátovaným vstupem v Javě je poněkud složitější než v jazyce C++. Je používán objekt System.in. Při zadávání znaků z klávesnice jsou jednotlivé znaky interpretovány jako bajty zakončené ukončovacím znakem ' '. Je vhodné je proto načíst do pole bajtů. V následujícím příkladu si ukážeme načtení dat z formátovaného vstupu a jejich konverze na typ int.byte [] pole=new byte [30];
System.in.read(pole);
Bajty následně převedeme na řetězec typu String
String retezec=new String(pole);
a ořízneme ukončovací znaky
retezec=retezec.trim();
Následně provedeme konverzi String na typ int. Nezapomeňme na explicitní přetypování.
int cislo=(int)Long.parseLong(retezec);
Obdobným způsobem bychom postupovali i při konverzi na jiné datové typy:
double cislo=Double.parseDouble(retezec);
Tento kód je vhodné obalit do konstrukce try/catch pro odchycení případné výjimky vzniklé např, tím, že uživatel na vstupu zadá textový řetězec obsahující jeden nebo více znaků, které nejsou číslicemi. S tímto přístupem se setkáme až v části věnované odchytávání výjimek.
Autor: Filip Koval