Przemysław Wionczyk
JAVA
Wejście i wyjście
Wejście i wyjście
1 / 9
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
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
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
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
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
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
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
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