Класс Scanner в Java — описание и пример использования

Класс Scanner в Java — описание и пример использования

Продолжаем цикл статей для начинающих материалом о классе Scanner. Сделаем краткий обзор и посмотрим на примере наиболее используемые методы.

Краткий обзор класса Scanner в Java

Класс Scanner используется для получения (считывания) данных введенных пользователем в виде String, byte, short, int, long, float, double.

Сканер выполняет поиск токенов во входной строке.

Токен (или маркер) представляет собой серию цифровых или буквенно-цифровых символов, которая заканчивается разделителем. Разделителем может быть символ табуляции, возврат каретки (перевод строки или же просто ‘Enter’), конец файла или пробел.

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

Пример использования Scanner в Java

Класс Scanner предоставляется с множеством конструкторов, например:

Второй конструктор бросает FileNotFoundException.

Давайте рассмотрим академические примеры работы с каждым из них:

1). Считываем примитивные типы данных и строку:

Обратите внимание, что при считывании float и double может быть выброшен InputMismatchException. Это говорит о том, что было введено значение, которое не распозналось как float или double.

Почему так происходит? Все дело в локали, а еще точнее — в знаке, который отделяет целую часть от остатка. В нашем случае мы вводили значение с запятой: 1,23 и проблем не было, однако попытка ввода такого значения: 1.23 приведет к вышеупомянутой ошибке.

Как избежать этого? Достаточно просто указать для Scanner‘а локаль:

И теперь можно считывать float и double значения с точкой в виде 1.231.

Также ситуации с InputMismatchException можно избежать используя методы:

  • boolean hasNextLine(): вернет true если у сканера есть следующая входная строка, иначе — false;
  • boolean hasNextInt(): вернет true если следующим токеном сканера является значение типа int;
  • boolean hasNextFloat(): вернет true если следующим токеном сканера является значение типа float;

2). Вторым академическим примером является обработка файла с помощью Scanner

Он располагает двумя методами для считывания данных:

  • .hasNext();
  • .hasNextLine();

Они возвращают true, если в файле есть еще токен.

 

Как видите, классом Scanner очень удобно обрабатывать различные источники информации — будь-то файлы, потоки ввода или строки.

4 thoughts to “Класс Scanner в Java — описание и пример использования”

  1. «Дробная часть числа» — это иное понятие, нежели понятие «остаток».
    Цитата:
    Почему так происходит? Все дело в локали, а еще точнее — в знаке, который отделяет целую часть от ОСТАТКА.

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

  3. сколько смотрю нихрена непонимаю откуда что береться и нафиг єтот сканнер нужен

Добавить комментарий для Артем Отменить ответ

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