Wprowadzanie danych z klawiatury

– 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ę.
1
Zadanie
Składnia Java,  poziom 3lekcja 7
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.

Komentarze (4)
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Adam Kruszczyński
Poziom 12 , Wieruszow, Poland
4 sierpnia 2020, 15:56
Przepraszam czy mógłby mi ktoś wytłumaczyć na czym polega BufferedReader i jak z niego korzystać nie jestem w stanie napisać z nim żadnego kodu ponieważ go nie rozumiem czy mógłby ktoś podać jakiś przykład i mi to wytłumaczyć lub podać link do strony gdzie jest już to wytłumaczone ponieważ tłumaczenie które znalazłem w zadaniu mi nie wystarcza
Mateusz Grot
Poziom 6 , Kraków, Polska
28 marca 2020, 12:07
Witam, czy jest ktoś jeszcze kto tego nie rozumie podobnie jak ja ? Zadanie ze strony następnej zrobiłem ( Plan podboju świata) ale używając kodu z tej strony. Czy dalej jest to wytłumaczone lepiej i dokładniej ? Czy ktoś w zrozumieniu tego posiłkował się innymi materiałami ?
Krzysztof Rek
Poziom 7 , Mielec, Poland
29 marca 2020, 12:40
Może tak jak ja masz na codegym pierwszy kontakt z javą czy programowaniem? :) To jest oczywiście niezrozumiałe dla laików takich jak ja, ale chyba o to chodzi, żeby się otrzaskać z kodami, a stopniowo ogarniać coraz więcej. Ja póki co jak się zatnę to po prostu googluję problemy i z reguły znajduję odpowiedzi (np. w bazie wiedzy javastart, itp.), ale chyba zaopatrzę się w którąś z książek, które rekomendowali.
Maja
Poziom 20 , Stavanger, Norway
8 lipca 2020, 07:02
Ja uważam, że to jest bardzo mądrze zaplanowane :) Jeżeli chcesz zostać dobrym programistą, musisz nabyć umiejętność wyszukiwania w Google potrzebnych Ci informacji (a dodatkowo uczysz się wtedy bardziej efektywnie). Ja też wielu rzeczy nie rozumiem, ale staram się iść dalej i po chwili różne rzeczy stają się jasne. Wtedy pojawiają się następne niezrozumiałe rzeczy i tak dalej. To jest proces. :)