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

Открыта

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

— Для вывода данных на экран мы использовали 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); //преобразовываем строку в число.
4
Задача
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. В данной ситуации он удобен, но в будущем толку от него мало. Так что мы пользоваться им не будем.

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

Комментарии (222)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
GigaMax5 уровень
позавчера, 18:35
Придётся забежать чуть чуть вперед)))
Наталья3 уровень, Днепр
5 апреля, 10:41
Толку от таких объяснений! Или преследуется тайная цель - массовые подрывы мозгов учащихся, сопровождающиеся мощными звуковыми эффектами. Предлагаю поступать проще - "Тема- ввод с клавиатуры, разбирайтесь сами, задачи ниже." Четко, ясно, без лишней пыли.
Ivan4 уровень, Москва
27 марта, 09:38
Немножко хочется добавить диалоговое пояснение, т.е. сам вопрос как часть оператора. Возможно ли вывести в консоль или это надо отдельным оператором до того выводить? Напр: >>> Ввести параметр: [мигающий курсор]
Svetlana Rumyantseva5 уровень, Москва
21 марта, 11:50
А если надо преобразовать текст в не целое число, например 1,5 какую команду стоит использовать?
Ksenia6 уровень, Санкт-Петербург
26 марта, 19:30
Тип переменной для дробных чисел - double. И там не запятую нужно ставить, а точку. То есть например так - double x = 0.3;
Алексей4 уровень
14 марта, 18:14
"+ 1 шаг к цели...." - это местная мантра что ли?
Adam Lerner3 уровень
15 марта, 12:45
:D Парень к цели идет!)
Mr R7 уровень, Санкт-Петербург
21 марта, 08:28
С каких пор целеустремленная личность стала посмешищем?
Evgeniy6 уровень, Москва
2 апреля, 11:46
Это недалекий ум. В идее выдает статистику, что задачи решают сотни тысяч людей, и человек не думает о том, что было бы, если бы каждый присутствующий "с...л" подобным образом в комментариях. Лично я хотел бы видеть здесь интересную и полезную информацию, либо получать помощь от коллег в сложных для меня ситуациях, а не искать эту самую полезную информацию в куче, которую генерируют люди, которые совсем не думают о других людях на портале.
Sergey7 уровень
10 марта, 09:47
+ 1 шаг к цели "Стать Java-программистом"
Roma Popov11 уровень, Санкт-Петербург
12 марта, 11:53
+ 1 шаг к цели "Стать Java-программистом"
Евгений4 уровень
7 апреля, 23:07
+1 к потере связи с реальностью
Евгений4 уровень
позавчера, 08:59
У него просто рекурсия до 40 уровня.
АртемGeek13 уровень, Москва
25 февраля, 07:58
Ребят. если кто, что не понял. Советую хорошо прочитать пару раз(с доп материалами) и вернуться к материалу дня через два, удивитесь, каким то образов все встает сразу на свои места. Видимо мозг как то ограничивает восприятие новой информации, когда ее много, но если к ней возвратиться повторно, она уже не будет новой и сразу все поймете.
Iurii Brazhko 3 уровень
среда, 16:27
Я тоже так делаю. Работает всегда, при условии, что два или три дня учить что-нибудь дальше, а не халявить.
Александра8 уровень, Москва
19 февраля, 13:15
Я извиняюсь за тупой вопрос, но я с абсолютного нуля, поэтому - что вообще означает ввод данных с клавиатуры? Для чего это надо?
j3ster4 уровень
19 февраля, 16:16
Это означает, что, например, в какую-нибудь перемеренную мы можем занести значение непосредственно во время работы программы, а не в самом коде. Можно написать:
String a = "Александра";
А можно объявить эту переменную, а уже во время работы программы с клавиатуры ввести нужные нам данные.
Maxim4 уровень
19 февраля, 19:24
А если еще проще, то когда вы вводите свои логин и пароль при входе на фейсбук, например, то грубо говоря "программа считывает ввод с клавиатуры". Когда вы играете в видеоигру, она считывает ввод с клавиатуры прямо в процессе игры (когда вы нажимаете кнопки управления, вводите имя и прочее).
Александра8 уровень, Москва
21 февраля, 09:34
Спасибо! Вот теперь понятно))
Iurii Brazhko 3 уровень
среда, 16:29
Почему я читаю это в комментариях, а не в основной статье?
Marina8 уровень, Екатеринбург
16 февраля, 09:35
https://javarush.ru/groups/posts/1919-schitihvanie-s-klaviaturih--riderih после видео и чтения этого материала + разбора примеров в Idea стало все понятно
Evgeny Ilin13 уровень, Самара
14 февраля, 20:39
Очень важное дополнение по теме последнего примера! https://ru.stackoverflow.com/questions/526818/scanner-%D0%BD%D0%B5-%D1%81%D1%87%D0%B8%D1%82%D1%8B%D0%B2%D0%B0%D0%B5%D1%82-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-nextint