Ввод с клавиатуры

Открыта

— Амиго, настало твоё время — теперь я расскажу про ввод с клавиатуры.

— Для вывода данных на экран мы использовали System.out. Для ввода данных будем использовать  System.in.

— Звучит не сложно.

— Но у System.in есть минус – он позволяет считать с клавиатуры только коды символов. Чтобы обойти эту проблему и считывать большие порции данных за один раз, мы будем использовать более сложную конструкцию:

Пример 1
Ввод строки и числа с клавиатуры
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String name = bufferedReader.readLine(); //читаем строку с клавиатуры
String sAge = bufferedReader.readLine(); //читаем строку с клавиатуры
int nAge = Integer.parseInt(sAge); //преобразовываем строку в число.
1
Задача
Java Syntax,  3 уровень,  7 лекция
Недоступна
Набираем код Ӏ Java Syntax: 3 уровень, 7 лекция
Java Syntax: 3 уровень, 7 лекция. Иногда думать не надо, строчить надо! Как ни парадоксально звучит, порой пальцы «запоминают» лучше, чем сознание. Вот почему во время обучения в секретном центре JavaRush вы иногда встречаете задания на набор кода. Набирая код, вы привыкаете к синтаксису и зарабатываете немного материи. А ещё — боретесь с ленью.
Пример 2
Более компактная запись первой части:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String name = reader.readLine();
String sAge = reader.readLine();
int nAge = Integer.parseInt(sAge);
Пример 3
Еще более компактная
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();

— Вопросы?

— Эээ… Ничего не понятно.

— Чтобы считать строку с клавиатуры, удобнее всего воспользоваться объектом BufferedReader. Но для этого в него нужно передать объект, из которого он будет вычитывать данные – System.in.

— Но System.in и BufferedReader не совместимы друг с другом, поэтому мы используем переходник – еще один объект InputStreamReader.

— Вроде ясно. А что еще за класс Scanner?

— Использовать Scanner довольно удобно, но от этого не очень много пользы. Дело в том, что в будущем (и в учебе, и на работе) ты будешь часто использовать объекты BufferedReader и InputStreamReader и очень-очень редко объект типа Scanner. В данной ситуации он удобен, но в будущем толку от него мало. Так что мы пользоваться им не будем.

— Что-то вроде понятно, но не уверен, что все и правильно.

Комментарии (441)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Ivan Matveenko4 уровень
вчера, 13:37
https://www.youtube.com/watch?v=PZa7LEY_7LM
Musa Muradzade4 уровень, Санкт-Петербург
среда, 09:57
яся, пойду шерстить metanit
Андрей3 уровень, Санкт-Петербург
25 мая, 01:25
У меня одного при помещении конструкции из первого примера в программу при запуске выдаёт ошибку про то что java не знает class InputStream?
Павел4 уровень
вторник, 18:19
import java.io.InputStream; добавь это перед классом
Сергей Федоров6 уровень, Москва
21 мая, 16:49
Мдааааа. Понятно одно, что ничего не понтяно! Ну будем посмотреть, что там нас ждёт дальше.
20 мая, 08:42
Почему у меня не работает код? Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); int age = scanner.nextInt(); System.out.println("");
Valua Sinicyn5 уровень, Харьков
20 мая, 13:59
import java.util.Scanner; import java.io.*;
Valua Sinicyn5 уровень, Харьков
20 мая, 05:51
Серьезно ? IO на 3-м уровне ? ))
Антон4 уровень, Санкт-Петербург
17 мая, 19:27
- Вопросы? - Эээ...Ничего не понятно. Это прям про меня )))
Anton Povarnitsin5 уровень
16 мая, 09:18
Вот можно здесь эту тему также посмотреть: https://metanit.com/java/tutorial/2.9.php
Андрей7 уровень, Новосибирск
15 мая, 12:40
Просьба к опытным сокурсникам, поясните пожалуйста строчку: Reader inputStreamReader = new InputStreamReader(inputStream); Я же правильно понимаю, что объект класса объявляется по формуле имяКласса названиеПеременной = new имяКласса (параметрыКонструктора)? Тогда почему здесь несоответствие имени класса Reader и InputStreamReader?
Daria15 уровень, Санкт-Петербург
15 мая, 19:36
Если коротко, у классов есть своя иерархия. Например, у класса Цветок может быть подкласс Одуванчик. В таком случае мы можем создать новый объект одуванчик и как - Одуванчик одуванчик = нью Одуванчик(); и Цветок одуванчик = нью Одуванчик(); Зачем и в чём разница - должны в лекциях про классы и наследование рассказать.) Здесь это работает, потому что InputStreamReader - подкласс Reader'a.
Андрей7 уровень, Новосибирск
16 мая, 12:35
Спасибо за информацию!
Алексей3 уровень, Санкт-Петербург
14 мая, 18:39
Снова лекция из серии "Нагугли сам"
Oleg Oleg8 уровень, Варшава
15 мая, 09:08
Вы так говорите, как-будто это плохо.
Vladislav3 уровень, Нячанг
19 мая, 03:53
Это не просто плохо, это хреново! Оплачивая курс ожидаешь увидеть учебную информацию, а видим посыл в гугл! Представьте если бы вся система образования выглядела бы именно так "Хочешь выучить что-то новое? Ок, плати деньги, мы научим. Заплатил? Учись сам в гугле!" Вам, вероятно со стороны админов это хорошо, меньше работы, а вот ученикам хреново! После обучения большая часть учеников будут с негативом отзываться о вас.
Oleg Oleg8 уровень, Варшава
19 мая, 14:34
Ну, приобретая курс за 30-50$$/мес, надо быть морально готовым к тому, что индивидуального подхода не будет. Да и курс JavaRash лично я рассматриваю скорее как задачник. Мы получаем задачу, и нам указывают, в каком направлении двигаться. Можно гуглить. Можно читать литературу обучающую( список книжек для начинающих привели в начале). Можно пропустить задачу и ждать объяснения/просветления в будущем. Каждый решает сам для себя, в зависимости от степени заинтересованности вопросом. Мне кажется, претензии в стиле "я заплатил, моя работа на этом закончилась, делайте из меня программиста" - необоснованные. И да, система образования так и выглядит, если студент не хочет, чтобы его знания ограничились подготовкой к экзамену. ИМХО.
Vladislav3 уровень, Нячанг
21 мая, 06:05
Я где-то писал про ожидания индивидуального подхода? Может не стоит мне приписывать свои домыслы? Или это классика на JR когда появляется аргументированная критика? За 30$ я ожидал обучения и практики. Практика есть, не спорю, а вот с обучением огромные проблемы! Если бы JR изначально позиционировали себя как "сборник заданий" то вопросов таких не возникало бы. З.Ы. Учитесь принимать критику, а не отвечать как в детском саду "сам дурак". Именно отсутствие клиентоориентированности вас и погубит.
Oleg Oleg8 уровень, Варшава
21 мая, 07:04
Я Вам свои свои мысли и не приписываю. Высказываю свою точку зрения. Именно поэтому в конце поста и написано "ИМХО". Аргументированная критика предполагает наличие аргументов😉. И почему эту критику должен принимать я по Вашему? Кто виноват в том что ВАШИ ожидания не оправдались? Надо было сначала поближе познакомиться с продуктом, а потом деньги платить. Я вот уже до 7 уровня дошел, ничего не платя. Но все больше склоняюсь к приобретению подписки.
Михаил Никитюк4 уровень, Харьков
22 мая, 19:21
я короче нагуглил что пояснение будет аж в на 9 уровне https://javarush.ru/quests/lectures/questcore.level09.lecture06
Алексей3 уровень, Санкт-Петербург
24 мая, 14:47
Я же не за курс гугления заплатил.