Работа со сканером в Java (ввод и вывод данных)

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Scanner Vertex Academy

 

 

 

 

 

Scanner2 Vertex Academy

Данная статья:

  • написана командой Vertex Academy. Надеемся, что она Вам будет полезна. Приятного прочтения!
  • это одна из статей из нашего "Самоучителя по Java"

Предлагаем вспомнить 2 примера из жизни, которые как нельзя кстати будут для изучения данной темы.

  1. Когда мы путешествуем, в аэропорту наш багаж пропускают через ленту со сканером. Вот она была наша сумка на входе. Просканировал сканер сумку и работник аэропорта четко знает что ж мы там такое везём в ней.
  2. Точно также работает сканнер в магазинах. Вот был штрих-код на входе, отсканировал штрих-код продавец и теперь всё-всё знает о продукте, который числится под этим штрих-кодом.

Чем то схожие задачи есть и в мире программирования на Java. Например, часто необходимо выполнить такие задачи:

  • Пользователь ввёл в консоли какое-то число. А программа должна считать с консоли, какое же число ввёл пользователь.
  • Пользователь ввёл в консоли какое-то слово. А программа должна считать с консоли, какое же слово ввёл пользователь.

Для решения таких задач в Java используется сканер (от англ. Scanner).  Запомните: если что-то ввели в консоли, а нам надо считать что же именно ввели  - используем сканер.

Итак, рассмотрим несколько примеров кода, после которых Вы:

  1. Поймёте на практике как работает сканер. Всего в статье будет 6 примеров кода. Рекомендуем все примеры кода запускать на своём компьютере и на практике изучать как это работает.
  2. Освоите 4 метода сканера:

next ();

nextLine ();

nextInt ();

nextDouble ();

Методы - это, грубо говоря, действия, которые может выполнять Scanner. На самом деле методов у сканера намного больше. Но на данном этапе Вам будет достаточно этих 4 методов. Ну что, поехали!!!


Пример №1 - с методом nextInt ()

Допустим, мы хотим, чтоб пользователь ввёл в консоль любое целое число от 1 до 10, а программа вывела ему ответ, какое именно число он ввёл.

Поскольку нам необходимо как бы "сосканировать", какое число ввёл пользователь, всё логично - нам понадобится сканер. Ниже приводим решение и комментарии к решению.

Решение:

Если Вы попробуете запустить этот код на своём компьютере, то в консоли Вы увидите следующее: 

Введите любое целое число от 1 до 10:

Затем, если Вы, например, введёте число 5, то в консоли будет следующее:

Введите любое целое число от 1 до 10: 5
Вы ввели число 5

Комментарии:

В статье "Что такое библиотека Java?" мы с Вами разобрались,  что в Java есть огромная библиотека протестированного кода - это уже готовые решения ко многим задачам, которые стоят перед программистами в их ежедневной работе. Также мы говорили о различных пакетах, классах и методах. Так вот, сейчас мы будем с Вами работать с пакетом java.util. В этом пакете есть класс Scanner. И у него есть методы (действия), которые позволяют работать с вводом и выводом информации в консоль.

Сканер в Java

Но чтобы мы смогли использовать в нашем коде класс Scanner, нам необходимо сделать 3 шага.

Шаг №1 - обязательно прописать вот такую строчку в коде

Зачем мы прописали эту строчку? С помощью этой строчки мы импортировали из пакета java.util класс Scanner. Если бы мы забыли это написать, сканер бы просто не работал. Также обратите внимание где мы прописали эту строчку.

Далее мы попросили пользователя ввести любое целое число от 1 до 10. Для этого написали

ШАГ №2 - объявить сканер

Scanner2 Vertex Academy

  1. С помощью Scanner scan мы указали, что переменная будет иметь имя scan и будет относится к классу Scanner. Обязательно перед именем переменной прописать слово Scanner. А саму переменную можете называть, как хотите. Не обязательно scan.
  2. Затем пишем = new Scanner (System.in);

Когда Вы дойдете до темы классов, Вы намного лучше поймёте эту конструкцию. На данном этапе достаточно этого для понимания.

ШАГ №3 - считать число с консоли

  1. С помощью int number мы объявили переменную с именем number, относящуюся к типу int. Почему именно тип int мы выбрали для переменной? Потому что по условию задачи пользователь должен ввести любое целое число от 1 до 10. Соответственно, мы ожидаем что введенное пользователем число будет целым. И поэтому для переменной number выбрали целочисленный тип int.
  2.  = scan. nextInt ();  метод сканера nextInt() отвечает за то, чтобы считать введенное пользователем  целое число с консоли. То есть с помощью scan.nextInt () мы считываем введенное целое число с консоли и присваиваем его переменной  number.

Всё, теперь в переменной number у нас будет то число, которое введёт пользователь. Ура!

Затем нам нужно было вывести введённое пользователем число в консоль, и мы это сделали с помощью вот этой строчки


Пример №2 - с методом nextInt ()

Попросите пользователя ввести 2 любых целых числа. После этого необходимо вывести в консоль сумму этих 2 чисел

Решение:

Если Вы попробуете запустить этот код на своем компьютере, то в консоли Вы увидите следующее: 

Введите 2 любых целых числа:

Затем, если Вы, например, введёте число 1 и число 2, то в консоли будет следующее:

Введите 2 любых целых числа:
1
2
3

Комментарии:

Опять сделали 3 шага для подключения сканнера.

ШАГ №1: Импортировали сканнер из пакета java.util

Затем попросили пользователя ввести любых 2 целых числа

ШАГ №2 - объявляем сканер

  1. С помощью Scanner k мы указали, что переменная будет иметь имя k и будет относится к классу Scanner. Обязательно перед именем переменной прописать слово Scanner. А саму переменную можете называть как хотите. Не обязательно k.
  2. Затем пишем = new Scanner (System.in);

ШАГ №3 - считали число с консоли

Причем сделали это 2 раза, потому что мы же попросили пользователя ввести 2 числа.

Всё, теперь в переменной number1 и переменной number2 у нас будут те числа, которые введет пользователь.

И затем вывели на экран сумму number1 и number2


Пример №3 - с методом nextLine ()

Допустим мы хотим, чтобы пользователь вводил в консоль любое слово или фразу, а мы могли бы вывести ему какое слово или фразу он ввёл.

Решение:

Если Вы попробуете запустить этот код на своём компьютере, то в консоли Вы увидите следующее: 

Введите любое слово или фразу:

Затем, если, например, пользователь введёт фразу "Я повелитель Сканера", то в консоли будет следующее:

Введите любое слово или фразу:
я повелитель Сканера
я повелитель Сканера

Комментарии:

Опять сделали 3 шага для подключения сканера.

ШАГ №1: Импортировали сканер из пакета java.util

Затем попросили пользователя ввести любое слово или фразу

ШАГ №2 - объявили сканер

ШАГ №3 - считали слово или фразу с консоли

  1. С помощью String phrase1 мы объявили переменную с именем phrase1, относящуюся к типу String. Почему именно тип String мы выбрали для переменной? Потому что по условию задачи пользователь должен ввести слово или фразу. Соответственно, мы ожидаем, что пользователь введёт слово или фразу. И поэтому для переменной phrase1 мы выбрали тип String.
  2.  = sc. nextLine (); отвечает за то считывание введенного пользователем слова или фразы с консоли. То есть с помощью метода nextLine () мы считываем введенное слово или фразу с консоли и присваиваем его переменной phrase1.

Теперь в переменной phrase1 у нас будет то слово или фраза, которые введёт пользователь.

Обратите внимание:  для целых чисел, как в примере №1 и №2, мы использовали метод nextInt (); Поскольку здесь мы уже ожидаем не целое число, а то что пользователь введет (слово или фразу), используется метод nextLine();

И далее выводим в консоль слово или фразу, которые ввел пользователь


Пример №4 - с методом nextLine ()

Допустим мы хотим, чтобы пользователь вводил в консоль сразу несколько слов или фраз, а мы могли бы вывести ему одной строчкой, что же он ввёл.

Решение:

Если Вы попробуете запустить этот код на своём компьютере, то в консоли Вы увидите следующее: 

Введите любые 2 слова или  фразу:

Затем, если, например, пользователь введёт фразу "Я обожаю" и затем слово "Java" то в консоли будет следующее:

Я обожаю
Java
Я обожаю Java

Комментарии:

Опять сделали 3 шага для подключения сканера.

ШАГ №1: Импортировали сканер из пакета java.util

Затем попросили пользователя ввести любые 2 слова или фразу

ШАГ №2 - объявили сканер

ШАГ №3 - считали слово или фразу с консоли

  1. С помощью String phrase1  и String phrase2  мы объявили переменные с именем phrase1 и phrase2, относящиеся к типу String. Почему именно тип String мы выбрали для переменных? Потому что по условию задачи, пользователь должен ввести 2 любые слова или фразу. Соответственно, мы ожидаем что пользователь введёт 2 слова или фразу. И поэтому для переменных phrase1 и phrase2 мы выбрали тип String.
  2.  = sc. nextLine (); отвечает за то, чтобы считать введенное пользователем слово или фразу с консоли. То есть с помощью метода nextLine () мы считываем введенное слово или фразу с консоли и присваиваем его в переменную phrase1 и phrase2.

И далее вывели в консоль 2 слова или 2 фразы, которые ввёл пользователь

Обратите внимание: между phrase1 и phrase2 мы добавили " ". Если бы мы это не сделали, в консоль было бы выведено следующее:

Я обожаю
Java
Я обожаюJava


Пример №5 - с методом next ()

Допустим, Вы хотите, чтоб пользователь ввёл любое слово или фразу. И при этом, чтобы программа вывела в консоль всё до первого пробела.

Например, если пользователь введёт "Работа со сканнером - это круто", программа прочитает только слово "Работа". Потому что первый пробел появляется после слова "работа".

Или если пользователь, например, введёт "Я люблю Java", программа прочитает только слово "Я". Потому что первый пробел появляется после слова "Я".

В общем, логику Вы поняли. Смотрим как это будет в коде.

Решение:

Если Вы попробуете запустить этот код на своём компьютере, то в консоли Вы увидите следующее: 

Введите любое слово или фразу:

Затем, если, например, пользователь введёт фразу "Я повелитель Сканера", в в консоли будет следующее:

Введите любое слово или фразу:
я повелитель Сканера
я

Комментарии:

Опять сделали 3 шага для подключения сканера.

ШАГ №1: Импортировали сканер из пакета java.util

ШАГ №2 - объявили сканер

Затем попросили пользователя ввести любое слово или фразу

ШАГ №3 - считали слово или фразу с консоли

  1. С помощью String phrase1 мы объявили переменную с именем phrase1, относящуюся к типу String. Почему именно тип String мы выбрали для переменной? Потому что по условию задачи, пользователь должен ввести слово или фразу. Соответственно, мы ожидаем что пользователь введёт слово или фразу. И поэтому для переменной phrase1 мы выбрали тип String.
  2.  = sc. next ();  считывает введенное пользователем слово или фразу с консоли до первого пробела. То есть с помощью метода next () мы считываем введенное слово или фразу с консоли до первого пробела и присваиваем его в переменную phrase1.

Теперь в переменной phrase1 у нас будет всё, что будет до первого пробела.

И далее выводим в консоль то, что будет до первого пробела.


Пример №6 - с методом nextDouble ()

Допустим Вы хотите, чтоб пользователь ввёл любое дробное число. А программа должна считать, какое же число ввёл пользователь, и вывести в консоль.

Решение:

Если Вы попробуете запустить этот код на своём компьютере, то в консоли Вы увидите следующее: 

Введите любое дробное число:

Затем, если Вы, например, введёте число 2,0  - в консоли будет следующее:

Введите любое дробное число:
2,0
Вы ввели число 2.0

Комментарии:

Bug Vertex Academy

ВНИМАНИЕ - БАГ!!!

Обратите внимание, что все числа типа double всегда пишутся в коде в формате 2.0. То есть через точку, а не через запятую.

А когда мы вводили число типа double в консоли, мы специально ввели в формате 2,0 - через запятую. При этом программа вывела нам в правильном формате 2.0 - "Вы ввели число 2.0"

Это баг. Просто нужно запомнить, что когда Вы вводите число типа double в консоли, надо его вводить через запятую. Если бы Вы ввели число в консоль в формате 2.0, программа выдала бы Вам ошибку!

В коде мы опять сделали 3 шага для подключения сканера.

ШАГ №1: Импортировали сканер из пакета java.util

Затем попросили пользователя ввести любое дробное число

ШАГ №2 - объявили сканнер

ШАГ №3 - считали число с консоли

  1. С помощью double number мы объявили переменную с именем number, относящуюся к типу double. Почему именно тип double мы выбрали для переменной? Потому что по условию задачи, пользователь должен ввести любое дробное число. Соответственно, мы ожидаем что введённое пользователем число будет дробным. И поэтому для переменной number выбрали тип double.
  2.  = scan. nextDouble ();  метод сканера nexDouble() отвечает за то, чтобы считать введённое пользователем дробное число с консоли. То есть с помощью scan.nextDouble () мы считываем введённое дробное число и присваиваем его переменной number.

Всё, теперь в переменной number у нас будет то число, которое введёт пользователь

Затем нам нужно было вывести введённое пользователем число в консоль, и мы это сделали с помощью


 ПОДЫТОЖИМ

Чтобы использовать сканер, необходимо сделать 3 шага:

Шаг №1: Сделать импорт сканера из пакета java.util

Шаг №2: Объявить сканер. Например:

Шаг №3: Вызвать соответствующий метод для считывания с консоли. Например:

Методы сканера, которые Вы уже знаете:

next (); - считывает введённую строку до первого пробела

nextLine (); - считывает всю введённую строку

nextInt (); - считывает введённое число int

nextDouble (); - считывает введённое число double

Также помним, что при использовании метода nextDouble () для дробных чисел, числа в консоли вводим через запятую, а не через точку. Например: 7,5


Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Обучаем с нуля. Детальную информацию Вы можете найти у нас на сайте.

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Добавить комментарий

Ваш e-mail не будет опубликован.

Самоучители--узнать детальнее--