CodeGym/Kursy/Składnia Java/Wprowadzanie danych z klawiatury

Wprowadzanie danych z klawiatury

Dostępny

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

Komentarze (11)
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Anonymous #11274698
Poziom 8 , Gorzow Wielkopolski, Poland
14 marca 2023, 12:18
Ta kompaktowa wersja kodu działa za każdym razem? Czy jednak częściej trzeba używać tej dłuższej?
Przemo
Poziom 17 , Legnica, Poland
31 lipca 2023, 04:02
No wlasnie raczej chyba nie, bo jak napisali na koncu, rzadko sie uzywa klasy scanner czyli tej podstawy.
Anonymous #11274698
Poziom 8 , Gorzow Wielkopolski, Poland
1 sierpnia 2023, 20:39
Miałem na myśli tę z drugiego przykładu :)
Criam 86
Poziom 4 , Poland
12 września 2022, 17:01
Eh ID cos z uporem dziala po kliknieciu RUN macie tez ten problem??
NeoBTK
Poziom 8 , Katowice, Poland
29 sierpnia 2022, 22:05
InputStream i BufferedReader spoko, zrozumiałe, ale jak dla mnie wygodniejszy jest Scanner. Wydawało mi się, że programiści to jego właśnie częściej używają. EDIT: OK, doczytałem w następnych lekcjach i artykułach, że są miejsca gdzie BufferedReader się lepiej sprawdzi.
Molo
Poziom 41 , Jacksonville, Dania
15 sierpnia 2022, 17:38
InputStreamReader to jest pomost dla "System.in" żeby dotrzeć do BufferedReadera i jak również widać też przydzielamy pamięć dla niego tyle w temacie :]
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 7 , Kraków, Polska
Expert
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 23 , 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. :)
Maja
Poziom 23 , Stavanger, Norway
21 września 2021, 19:33
Bo gdy dostajemy wiedze jak rozwiązać konkretny problem, który już mieliśmy i szukaliśmy informacji jak go rozwiązać, to ta wiedza zdecydowanie lepiej się przyswaja :)