Java - Formátováni vstupu a výstupu (12.díl)

Napsal O webu (») 10. 12. 2007 v kategorii Programování, přečteno: 6550×
obrazky/java_logo.png

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é:

  • znak ' ' (znaková konstanta) resp. (část řetězce): tabulátor.
  • znak ' ' (znaková konstanta) resp. (část řetězce): přechod na novou řádku.
    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
  • Štítky: Java
    Facebook Twitter Topčlánky.cz Linkuj.cz

    Komentáře

    Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
    Článek ještě nebyl okomentován.


    Nový komentář

    Téma:
    Jméno:
    Notif. e-mail *:
    Komentář:
      [b] [obr]
    Odpovězte prosím číslicemi: Součet čísel nula a šest