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

Wprowadzanie danych z klawiatury

Składnia Java
Poziom 3 , Lekcja 7
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ę.
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)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Anonymous #11274698 Poziom 8, Gorzow Wielkopolski, Poland
14 marca 2023
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
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
Miałem na myśli tę z drugiego przykładu :)
Criam 86 Poziom 4, Poland
12 września 2022
Eh ID cos z uporem dziala po kliknieciu RUN macie tez ten problem??
NeoBTK Poziom 8, Katowice, Poland
29 sierpnia 2022
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
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
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
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
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
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
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 :)