Obsah

Vstup a výstup

print V této kapitole si ukážeme, jak lze v Javě zapisovat na obrazovku a číst z klávesnice. K výstupu na obrazovku slouží tzv. výstupní proud (angl. output stream) System.out. Používat budeme tři jeho metody: print(), println() a printf().

  System.out.println( "Pozdrav z Afriky!" ); 
println Metody print() a println() vytisknou hodnotu, kterou uvedeme v závorkách za jménem metody (této hodnotě říkáme parametr). Liší se tím, že println() k výstupu navíc připojí přechod na nový řádek a tudíž následující volání metody print() nebo println() bude tisknout od začátku řádky. Při tisku lze využít spojování řetězců pomocí operátoru +.
  int v = 100;
  System.out.println( "Gepard dokáže běžet rychlostí " + v + " km/h" ); 
Elegantnější výstup nabízí metoda printf() (tzv. formátovaný výstup), která je obdobou stejnojmenné funkce jazyka C.
  int m = 6;
  System.out.printf( "Slon africký váží %d tun", m ); 
Parametry metody printf() jsou formátovací řetězec a seznam hodnot. Formátovací řetězec může obsahovat tzv. výstupní konverze, které určují, v jakém tvaru se vytiskne příslušná hodnota. Každá konverze začíná znakem %. Např. %d znamená výstup celého čísla v desítkové soustavě. Při provádění příkazu se místo konverze dosadí příslušná hodnota ze seznamu hodnot. Pokud hodnota chybí nebo neodpovídá výstupní konverzi, nastane chyba. print

Zvláštním případem je konverze %n, které neodpovídá žádná hodnota v seznamu hodnot. Na výstupu se tato konverze projeví přechodem na nový řádek. V MS Windows se pro přechod na nový řádek používá dvojice znaků \r (carriage return) a \n (line feed). Unixové systémy používají znak \n. Konverze %n zajistí, že se použije správný přechod na nový řádek, tj. \r\n na MS Windows a \n na Unixu.

Pro reálná čísla máme konverzi %f. Můžeme u ní stanovit počet číslic za desetinnou tečkou (implicitní hodnota je 6). Např. %.2f vytiskne dvě číslice za desetinnou tečkou. výstupní konverze

  System.out.printf( "Eulerova konstanta je asi %.2f%n", Math.E ); 
Znaky tiskneme pomocí konverze %c.
  char c = '@';
  int i = c;
  System.out.printf( "Znak '%c' je v tabulce Unicode na pozici %d%n", c, i ); 
Pro řetězce používáme konverzi %s.
  String java = "Java";
  System.out.printf( "Náš oblíbený programovací jazyk je %s%n", java ); 
Pro čtení z klávesnice máme v Javě tzv. vstupní proud (angl. input stream) System.in. Většinou jej nepoužíváme přímo, ale např. přes třídu Scanner. Tato třída nabízí metody pro čtení primitivních typů a řetězců. Používáme-li třídu Scanner, náš program obvykle začíná příkazem import, kterým překladači říkáme, kde má třídu Scanner hledat. Před prvním čtením vytvoříme instanci třídy Scanner pomocí klíčového slova new. Načtení hodnoty typu int provedeme voláním metody nextInt() na této instanci.
  import java.util.Scanner;

  public class Cteni {
     public static void main( String[] args ) {
        Scanner sc = new Scanner( System.in );
        int x = sc.nextInt();
        System.out.printf( "Načtená hodnota: %d%n", x );
     }
  } 
Načtení hodnoty typu double zajistí metoda nextDouble(). Řetězec načteme metodou next().
  Scanner sc = new Scanner( System.in );
  double d = sc.nextDouble();
  System.out.printf( "Načtené číslo: %f%n", d );
  String s = sc.next();
  System.out.printf( "Načtený řetězec: %s%n", s ); 

Úloha 1

Doplňte chybějící části kódu.

Úloha 2

Doplňte kód tak, aby byl výstup ve tvaru 1 + 2 = 3.

Úloha 3

Doplňte chybějící části kódu.

Úloha 4

Spárujte hodnoty, které patří k sobě.

Úloha 5

Určete, co se vytiskne.

Úloha 6

Napište ve správném pořadí.

Úloha 7

Napište ve správném pořadí.

Otázky a odpovědi

Student: Mistře, jak můžu v programu reagovat na stisk klávesy?
Java guru: Doposud jsme mluvili pouze o čtení hodnot v tzv. textovém režimu. Textový režim pochází z doby, kdy se programy ovládaly z příkazové řádky. V textovém režimu Java možnost reagovat na stisk klávesy nenabízí. Je to dáno tím, že terminál, který zprostředkovává interakci mezi uživatelem a programem, je obvykle v tzv. řádkovém režimu. V tomto režimu je vstupní řádka předána programu až po stisku klávesy Enter. Do té doby ji můžeme editovat. Dnes používáme textový režim jen výjimečně, např. v učebnicích jako je tato. Většina programů má grafické uživatelské rozhraní. V něm je reakce na stisk klávesy snadná.