Класс scanner в java

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

Введение

Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.

Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя. И именно такую задачу решает класс Scanner, о котором и пойдет речь в этой статье.
Этот класс позволяет считывать информацию, которую оставляет пользователь.

Действие этого класса очень похоже на работу прибора сканер, откуда у класса и такое название. Этот прибор внутри кажется более сложным, чем его работа. Он лишь считывает информацию, в случае со сканером это фотография паспорта или ещё какого-либо документа, и выдает результат в виде изображения, сохраняя результат в своей памяти.

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

Scanner

Самый важные элемент, о котором нужно знать при считывании информации — класс java.util.Scanner

Класс по своей функциональности очень прост. Нужно лишь указать указать источник информации, это может быть:

  • Консоль
  • Файл
  • Строка
  • И прочее

Далее он просканирует эту информацию и обработает ее в зависимости от самого вида информации.

Наглядный и несложный пример:

[code]
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
[code]

Как видите, объект сканера был создан, а также указан для него источник информации. Таким источником оказалась строка с текстом.

Далее прописан метод nextLine(). Он обращается к источнику информации, в нашем случае это оказалось четверостишие. После этого он находит строку, которую ещё не сканировал, в данном случае это первая строка четверостишия. Ну, а далее он возвращает ее и происходит вывод в консоль.

Результат:

Люблю тебя, Петра творенье,

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

Получится следующее:

[code]
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
[code]

Такое решение привело к тому, что сканер будет проверять каждую следующую строку.

В результате программа выведет то, что от нее ждали:

[code]
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
[code]

[code]
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
[code]

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

Раньше, чтобы увидеть результат программы, мы выводили ее результат в консоль, но теперь изменим сценарии и будем использовать ее не для вывода, а для ввода информации.

Это тоже входит в возможности класса:

[code]
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
[code]

Для считывания информации связанной с числами используют метод nextInt(). В данной программе он используется для одной цели — присвоить переменной number значение, которое ввел пользователь.

Теперь программа сканирует числовые данные, созданные пользователем. Когда пользователь введет число, то программа благодарит и показывает его число рядом, а после завершает работу. Правда есть здесь один нюанс. Если будет введено не число, а какой-нибудь специальный символ или буква, то произойдет взрыв. Шутка, но не далеко от истины.

Давайте же глянем, как сломается программа, если ввести не число.

[code]
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
[code]

Введем то, что вводят большинство новичков, которые написали свою первую программу — “hello world :)”

Итог:

Технические неполадки… Технические неполадки…

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

Что ж, в теории это работает, а есть ли такие инструменты у класса Scanner, чтобы провернуть всё это? И ответ прост. — Да, есть.

Для таких операции у него целая команда методов:

  • HasNextInt() — данный метод сканирует информацию, и если она оказалась числом, то возвращает её. Если данные являются числом, то это значение True, в противном же случае — значение False
  • HasNextLine() — тоже самое, что и предыдущий метод, только работает со строкой, а не с числами.
  • HasNextByte(), HasNextShort(), HasNextLong(), HasNextFloat(), HasNextDouble() — абсолютно тоже, что и предыдущие два, только для других типов данных.

Теперь изменим программу для проверки введенной информации.

Теперь программа работает иначе, сперва она проверяет информацию, а только потом выдает соответствующий результат. Если пользователь введет число, то программа поблагодарит и рядом покажет введенное число. Если же пользователь напишет что-то иное, то получит предупреждение о том, чтобы перезагрузил программу и ввел число.

Таким образом можно выстраивать сценарии, когда общаешься со сканером и спрашиваешь о следующем типе данных, которые нужно ввести. Используя такую гибкость класса можно построить логику программы, которая будет целиком зависеть от действий пользователя.

Следующий метод, о котором мы поговорим будет useDelimiter(). Он служит для разделения строк. В него записывается определенный шаблон, который будет говорить методу, где разделить строку.

Например, нам необходимо вывести несколько строк произведений японского поэта Мацуо Басе.
Если его произведения передадут в виде одной нераздельной строки, то это вовсе не помешает сделать текст разборчивым.

В качестве разделителя строк используется шаблон «\n/*/*/*». Переносит строку и ставит три звездочки. То, что появится в консоли будет выглядеть как в книге. Метод работает)

Результат:

Чтобы программа не была тяжелой для компьютера, нужно отключать сканер, когда он закончил работу и не работает с потоками ввода-вывода. Для этого существует метод — close().

Об этом методе нельзя забывать!

[code]
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
Как обычно пишут программы те, кто только начинают изучать Java? Обычно они пишут код простой программы, используют метод main(), а программа делает то, что должна.
Но настало время разнообразить программу и заставить давать какую-либо реакцию на действия пользователя.
[code]

Вот такой класс имеется в java. Он довольно прост, но очень полезен в работе.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *