– Amigo, nadszedł Twój czas. Opowiem Ci o wprowadzaniu danych z klawiatury.
– Używaliśmy System.out do wyświetlania danych na ekranie. Do wprowadzania danych użyjemy System.in.
– Wydaje się to łatwe.
– Ale System.in ma jedną wadę – pozwala nam odczytywać z klawiatury tylko kody znaków. Aby obejść ten problem i wczytywać większe porcje danych, użyjemy bardziej złożonej konstrukcji:
Wprowadź przy pomocy klawiatury string i liczbę
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String imie = bufferedReader.readLine(); //Wczytaj z klawiatury ciąg tekstowy
String sWiek = bufferedReader.readLine(); //Wczytaj z klawiatury ciąg tekstowy
int nWiek = Integer.parseInt(sWiek); //Konwertuj ciąg na liczbę.
Kompaktowa wersja poprzedniego przykładu:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String imie = reader.readLine();
String sWiek = reader.readLine();
int nWiek = Integer.parseInt(sWiek);
Jeszcze bardziej kompaktowy
Scanner scanner = new Scanner(System.in);
String imie = scanner.nextLine();
int wiek = scanner.nextInt();
– Jakieś pytania?
– Yyy... Nic nie zrozumiałem.
– Aby odczytać string z klawiatury, najwygodniej jest użyć obiektu BufferedReader. Aby to zrobić, musisz przekazać jako parametr obiekt, z którego będziesz czytać dane. W tym przypadku jest to System.in.
– Ale System.in i BufferedReader są niekompatybilne, dlatego używamy adaptera – innego obiektu InputStreamReader.
– Myślę, że teraz rozumiem. Czym jest klasa Scanner?
– Scanner może być wygodny, ale nie jest zbyt przydatny. Chodzi o to, że w miarę postępów (zarówno w nauce i w pracy) będziesz często używać klas BufferedReader i InputStreamReader, ale bardzo rzadko Scanner. Klasa ta jest bardzo wygodna w naszym przykładzie, ale w praktyce nie zdarza się to często. Zatem nie będziemy poświęcać na to wiele czasu.
– To wydaje się jasne, ale nie jestem pewien, czy wszystko zrozumiałem.
GO TO FULL VERSION