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

Przykład 1
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ę.
undefined
1
Zadanie
Składnia Java, poziom 3, lekcja 7
Niedostępne
Wprowadzanie kodu
Nie musisz myśleć, po prostu go wyklep! Brzmi to trochę paradoksalnie, ale czasami Twoje palce „pamiętają” kod lepiej niż Twój świadomy umysł. Właśnie dlatego trening w tajnym centrum CodeGym zawiera zadania wymagające wprowadzania kodu. Wprowadzając kod, przyzwyczajasz się do składni oraz zarabiasz ciemną materię. Co więcej, walczysz z własnym lenistwem!
Przykład 2
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);
Przykład 3
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.