background image

Przemysław Wionczyk

JAVA

Wejście i wyjście

Wejście i wyjście

1 / 9

background image

Przemysław Wionczyk

JAVA

Standardowe wejście i wyjście 

Do tego celu Java ma trzy obiekty:

System.out   –   umożliwia   wypisywanie   komunikatów   na   zwykłe 

wyjście standardowe

System.err   -   umożliwia   wypisywanie   komunikatów   na   zwykłe 

wyjście diagnostyczne, używane głównie do wypisywania błędów 

programu

System.in   -   umożliwia   wczytywanie   komunikatów   z   wejścia 

standardowego

2 / 9

background image

Przemysław Wionczyk

JAVA

Używanie wyjścia

Z obiektów out i err możemy korzystać bezpośrednio i nie różni się 

to zbytnio od sposobu używanego w C++, tylko przekazujemy dane nie 

do strumienia, ale jako parametr funkcji:

public class IO {

public static void main(String args[]) {

System.out.println("komunikat na out");
System.err.println("komunikat na err");
 System.out.println("Iloczyn liczb " + a + " i " +

" wynosi " + a*b );

}

}

3 / 9

background image

Przemysław Wionczyk

JAVA

Różnica między out a err

W   standardowej   sytuacji   dane   z   out   i   err   pojawiają   się   na 

standardowym   wyjściu,   ale   gdy   je   rozdzielamy   podczas   pisania 

programu to mamy możliwość przekierować strumienie tych danych do 

różnych wyjść podczas uruchamiania programu. Mając skompilowaną 

klasę IO z poprzedniej strony, możemy napisać:

java io 2>err.log

W takim wypadku komunikaty kierowane na err trafią do pliku „err.log” 

zamiast na ekran.

4 / 9

background image

Przemysław Wionczyk

JAVA

Używanie wejścia

Z   obiektu   in   nie   możemy   korzystać   bezpośrednio.   Musimy 

stworzyć obiekt poprzez który będziemy odczytywać dane. Dodatkowo 

musimy   obsłużyć   wyjątek   IOExeption.   Po   nazwie   metody   w   której 

chcemy wczytywać dane należy dopisać throws IOException:

public static void main(String args[]) throws IOException {
....
}

Na początku programu musimy jeszcze dodać:

import java.io.*;

5 / 9

background image

Przemysław Wionczyk

JAVA

Używanie wejścia

Wczytywanie tekstu najczęściej robimy linijka po linijce.

public static void main(String args[]) throws IOException {

...
BufferedReader stdin = new BufferedReader(new 

InputStreamReader(System.in) );

String s = stdin.readLine();  // wczytujemy linię tekstu
...
s = stdin.readLine(); 

// i kolejną

...

}

6 / 9

background image

Przemysław Wionczyk

JAVA

Wczytywanie liczb

Gdy chcemy wczytać liczbę, możemy wczytać tekst, a następnie 

skonwertować go do postaci danej liczby:

public static void main(String args[]) throws IOException {

...
BufferedReader stdin = new BufferedReader(new

InputStreamReader(System.in) );

String s = stdin.readLine(); 

// wczytujemy linię tekstu

int b = Integer.parseInt(s); 

// zmieniamy na liczbę

System.out.print("Liczba = " + b);  // i wypisujemy
...

}

7 / 9

background image

Przemysław Wionczyk

JAVA

Wczytywanie liczb

Wybiega to nieco w przód i korzysta z klas i obiektów, ale jest 

niezbędne  aby  cokolwiek  wczytać. A skoro  już  będziemy  używać, to 

opiszmy, niektórzy będą pewnie zainteresowani już teraz. 

Jak   widać   stworzyliśmy   obiekt   klasy     BufferedReader   o   nazwie 

stdin  za pomocą konstruktora, który jako parametr potrzebuje obiektu 

klasy   InputStreamReader któremu przy tworzeniu podaliśmy obiekt z 

którego wczytujemy dane. Mocno to skompilowane i trzeba po prostu 

zapamiętać.   Dalej   już   tylko   używamy   wbudowanych   metod   obiektu 

stdin. Najczęściej z metody readLine().

8 / 9

background image

Przemysław Wionczyk

JAVA

Zadania

1. Napisz program który wczyta po kolei twoje dane osobowe (imię, 

nazwisko,   datę   urodzenia,   pesel)   a   potem   wypisze   je   w   jednej 

linijce.

2. Napisz   program   który   wczyta   Napisz   program   który   wczyta 

z klawiatury dwie zmienne całkowite. Wypisz na wyjściu wyniki 

czterech   podstawowych   działań   arytmetycznych   wykonanych   na 

tych dwóch zmiennych.

3. Napisz identyczny program ale dla liczb zmiennoprzecinkowych.

9 / 9