Класс Scanner
Объект класса java.util.Scanner упрощает разбор строки из потока ввода. При вводе могут использоваться данные из консоли, файла, строки или любого другого источника, реализующего интерфейсы Readable или ReadableByteChannel .
Хотя Scanner и не является потоком, у него тоже обязательно вызывать метод close() , который закроет используемый основной источник.
Пример 1. Использование класса Scanner
public class ScannerExample < private static String fileName = "scan.txt"; public static void scanFile() < try (FileReader fileReader = new FileReader(fileName); Scanner scanner = new Scanner(fileReader)) < while (scanner.hasNext()) < if (scanner.hasNextInt()) < System.out.println(scanner.nextInt() + " :int"); >else if (scanner.hasNextDouble()) < System.out.println(scanner.nextDouble() + " :double"); >else if (scanner.hasNextBoolean()) < System.out.println(scanner.nextBoolean() + " :boolean"); >else < System.out.println(scanner.next() + " :String"); >> > catch (IOException e) < System.out.println(e.getMessage()); >> public static void makeFile() < try (FileWriter fileWriter = new FileWriter(fileName)) < fileWriter.write("2 Java 1,5 true 1.6 "); >catch (IOException e) < System.out.println(e.getMessage()); >> public static void main(String[] args) < ScannerExample.makeFile(); ScannerExample.scanFile(); >>
Пример 2. Использование класса Scanner для работы со строкой
- Потоки данных
- Класс File
- Байтовые потоки
- Конструкция try-with-resources
- Классы символьных потоков
- Упаковка (wrapping) классов
- Предопределенные потоки ввода-вывода
- Задания
Класс Java.util.Scanner
Класс java.util.Scanner – это простой текстовый сканер, который может анализировать примитивные типы и строки с помощью регулярных выражений. Ниже приведены важные замечания о сканере:
- Сканер разбивает входные данные на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу.
- Операция сканирования может заблокировать ожидание ввода.
- Сканер не безопасен для многопоточного использования без внешней синхронизации.
Сканер разбивает входные данные на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу.
Операция сканирования может заблокировать ожидание ввода.
Сканер не безопасен для многопоточного использования без внешней синхронизации.
Объявление класса
Ниже приводится объявление для класса java.util.Scanner.
public final class Scanner extends Object implements Iterator
Конструкторы классов
Сканер (Источник файла)
Это создает новый сканер, который выдает значения, отсканированные из указанного файла.
Сканер (Источник файла, String charsetName)
Это создает новый сканер, который выдает значения, отсканированные из указанного файла.
Сканер (источник InputStream)
Это создает новый сканер, который создает значения, отсканированные из указанного входного потока.
Сканер (источник InputStream, String charsetName)
Это создает новый сканер, который создает значения, отсканированные из указанного входного потока.
Сканер (читаемый источник)
Это создает новый сканер, который производит значения, отсканированные из указанного источника.
Сканер (источник ReadableByteChannel)
Это создает новый сканер, который производит значения, отсканированные с указанного канала.
Сканер (источник ReadableByteChannel, String charsetName)
Это создает новый сканер, который производит значения, отсканированные с указанного канала.
Сканер (источник строки)
Это создает новый сканер, который создает значения, отсканированные из указанной строки.
Сканер (Источник файла)
Это создает новый сканер, который выдает значения, отсканированные из указанного файла.
Сканер (Источник файла, String charsetName)
Это создает новый сканер, который выдает значения, отсканированные из указанного файла.
Сканер (источник InputStream)
Это создает новый сканер, который создает значения, отсканированные из указанного входного потока.
Сканер (источник InputStream, String charsetName)
Это создает новый сканер, который создает значения, отсканированные из указанного входного потока.
Сканер (читаемый источник)
Это создает новый сканер, который производит значения, отсканированные из указанного источника.
Сканер (источник ReadableByteChannel)
Это создает новый сканер, который производит значения, отсканированные с указанного канала.
Сканер (источник ReadableByteChannel, String charsetName)
Это создает новый сканер, который производит значения, отсканированные с указанного канала.
Сканер (источник строки)
Это создает новый сканер, который создает значения, отсканированные из указанной строки.
Методы класса
| Sr.No. | Метод и описание |
|---|---|
| 1 | void close () |
Этот метод закрывает этот сканер.
Этот метод возвращает шаблон, который этот сканер в настоящее время использует для сопоставления разделителей.
Этот метод пытается найти следующее вхождение указанного шаблона, игнорируя разделители.
Этот метод пытается найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители.
Этот метод пытается найти следующее вхождение указанного шаблона.
Этот метод пытается найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители.
Этот метод возвращает true, если у этого сканера есть другой токен на входе.
Этот метод возвращает true, если следующий полный токен соответствует указанному шаблону.
Этот метод возвращает true, если следующий токен соответствует шаблону, созданному из указанной строки.
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как BigDecimal с использованием метода nextBigDecimal ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как BigInteger в основании по умолчанию с использованием метода nextBigInteger ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера может быть интерпретирован как BigInteger в указанном основании с помощью метода nextBigInteger ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как логическое значение, используя шаблон без учета регистра, созданный из строки «true | false».
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как значение байта в основании по умолчанию с использованием метода nextByte ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как значение байта в указанном основании с помощью метода nextByte ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как двойное значение с помощью метода nextDouble ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как значение с плавающей запятой, используя метод nextFloat ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как значение int в основании по умолчанию с использованием метода nextInt ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как значение int в указанном основании с помощью метода nextInt ().
Этот метод возвращает true, если на входе этого сканера есть другая строка.
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как длинное значение в основании по умолчанию с помощью метода nextLong ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как длинное значение в указанном основании с помощью метода nextLong ().
Этот метод возвращает true, если следующий токен на входе этого сканера может быть интерпретирован как короткое значение в основании по умолчанию с использованием метода nextShort ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как короткое значение в указанном основании с помощью метода nextShort ().
Этот метод возвращает IOException, последний раз выданный базовым объектом чтения данного сканера.
Этот метод возвращает локаль этого сканера.
Этот метод возвращает результат сопоставления последней операции сканирования, выполненной этим сканером.
Этот метод находит и возвращает следующий полный токен с этого сканера.
Этот метод возвращает следующий токен, если он соответствует указанному шаблону.
Этот метод возвращает следующий токен, если он соответствует шаблону, созданному из указанной строки.
Этот метод сканирует следующий токен ввода как BigDecimal.
Этот метод сканирует следующий токен ввода как BigInteger.
Этот метод сканирует следующий токен ввода как BigInteger.
Этот метод сканирует следующий токен ввода в логическое значение и возвращает это значение.
Этот метод сканирует следующий токен ввода в виде байта.
Этот метод сканирует следующий токен ввода в виде байта.
Этот метод сканирует следующий токен ввода как двойной.
Этот метод сканирует следующий токен ввода как число с плавающей точкой.
Этот метод сканирует следующий токен ввода как int.
Этот метод сканирует следующий токен ввода как int.
Этот метод перемещает этот сканер за пределы текущей строки и возвращает пропущенный ввод.
Этот метод сканирует следующий токен ввода как длинный.
Этот метод сканирует следующий токен ввода как длинный.
Этот метод сканирует следующий токен ввода как короткий.
Этот метод сканирует следующий токен ввода как короткий.
Этот метод возвращает основание сканера по умолчанию.
Операция удаления не поддерживается этой реализацией Iterator.
Этот метод сбрасывает этот сканер.
Этот метод пропускает ввод, соответствующий указанному шаблону, игнорируя разделители.
Этот метод пропускает ввод, который соответствует шаблону, созданному из указанной строки.
Этот метод возвращает строковое представление этого сканера.
Этот метод устанавливает шаблон ограничения этого сканера к указанному шаблону.
Этот метод устанавливает шаблон разграничения этого сканера в шаблон, созданный из указанной строки.
Этот метод устанавливает локаль этого сканера в указанную локаль.
Этот метод Устанавливает основание этого сканера по умолчанию на указанное основание.
Этот метод закрывает этот сканер.
Этот метод возвращает шаблон, который этот сканер в настоящее время использует для сопоставления разделителей.
Этот метод пытается найти следующее вхождение указанного шаблона, игнорируя разделители.
Этот метод пытается найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители.
Этот метод пытается найти следующее вхождение указанного шаблона.
Этот метод пытается найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители.
Этот метод возвращает true, если у этого сканера есть другой токен на входе.
Этот метод возвращает true, если следующий полный токен соответствует указанному шаблону.
Этот метод возвращает true, если следующий токен соответствует шаблону, созданному из указанной строки.
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как BigDecimal с использованием метода nextBigDecimal ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как BigInteger в основании по умолчанию с использованием метода nextBigInteger ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера может быть интерпретирован как BigInteger в указанном основании с помощью метода nextBigInteger ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как логическое значение, используя шаблон без учета регистра, созданный из строки «true | false».
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как значение байта в основании по умолчанию с использованием метода nextByte ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как значение байта в указанном основании с помощью метода nextByte ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как двойное значение с помощью метода nextDouble ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как значение с плавающей запятой, используя метод nextFloat ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как значение int в основании по умолчанию с использованием метода nextInt ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как значение int в указанном основании с помощью метода nextInt ().
Этот метод возвращает true, если на входе этого сканера есть другая строка.
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как длинное значение в основании по умолчанию с помощью метода nextLong ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как длинное значение в указанном основании с помощью метода nextLong ().
Этот метод возвращает true, если следующий токен на входе этого сканера может быть интерпретирован как короткое значение в основании по умолчанию с использованием метода nextShort ().
Этот метод возвращает значение true, если следующий токен на входе этого сканера можно интерпретировать как короткое значение в указанном основании с помощью метода nextShort ().
Этот метод возвращает IOException, последний раз выданный базовым объектом чтения данного сканера.
Этот метод возвращает локаль этого сканера.
Этот метод возвращает результат сопоставления последней операции сканирования, выполненной этим сканером.
Этот метод находит и возвращает следующий полный токен с этого сканера.
Этот метод возвращает следующий токен, если он соответствует указанному шаблону.
Этот метод возвращает следующий токен, если он соответствует шаблону, созданному из указанной строки.
Этот метод сканирует следующий токен ввода как BigDecimal.
Этот метод сканирует следующий токен ввода как BigInteger.
Этот метод сканирует следующий токен ввода как BigInteger.
Этот метод сканирует следующий токен ввода в логическое значение и возвращает это значение.
Этот метод сканирует следующий токен ввода в виде байта.
Этот метод сканирует следующий токен ввода в виде байта.
Этот метод сканирует следующий токен ввода как двойной.
Этот метод сканирует следующий токен ввода как число с плавающей точкой.
Этот метод сканирует следующий токен ввода как int.
Этот метод сканирует следующий токен ввода как int.
Этот метод перемещает этот сканер за пределы текущей строки и возвращает пропущенный ввод.
Этот метод сканирует следующий токен ввода как длинный.
Этот метод сканирует следующий токен ввода как длинный.
Этот метод сканирует следующий токен ввода как короткий.
Этот метод сканирует следующий токен ввода как короткий.
Этот метод возвращает основание сканера по умолчанию.
Операция удаления не поддерживается этой реализацией Iterator.
Этот метод сбрасывает этот сканер.
Этот метод пропускает ввод, соответствующий указанному шаблону, игнорируя разделители.
Этот метод пропускает ввод, который соответствует шаблону, созданному из указанной строки.
Этот метод возвращает строковое представление этого сканера.
Этот метод устанавливает шаблон ограничения этого сканера к указанному шаблону.
Этот метод устанавливает шаблон разграничения этого сканера в шаблон, созданный из указанной строки.
Этот метод устанавливает локаль этого сканера в указанную локаль.
Этот метод Устанавливает основание этого сканера по умолчанию на указанное основание.
Методы унаследованы
Этот класс наследует методы от следующих классов –
Как работать с классом Scanner в Java: примеры
С помощью класса java.util.Scanner можно анализировать простые типы данных и строки. Этот класс принимает данные из файлов, потоков, строк, последовательностей символов или байтов.
Курс Project Manager.
Впроваджуйте покроковий алгоритм управління проєктами вже зараз. У цьому вам допоможе Павло Харіков — Head of IoT у Veon Group (Kyivstar).
Входные данные разбиваются на токены. По умолчанию разделителем токенов служит пробел, но его можно заменить строкой ( java.lang.String ) или регулярным выражением ( java.util.regex.Pattern ).
Для создания сканера используется конструктор Scanner , которому передаются входные данные и при необходимости тип кодировки.
Давайте рассмотрим конструкторы этого класса по порядку.
Конструктор public Scanner(Readable source)
Создает сканер, с помощью которого можно получить значения из источника, реализующего интерфейс Readable . Это могут быть объекты классов:
Курс С++ для GameDevData analyst.
Комплексний курс, який навчить кодити на C++ з нуля, отримай необхідні навички щоб заволодіти затребуваною мовою програмування.
- BufferedReader;
- CharArrayReader;
- CharBuffer;
- FileReader;
Курс Комерційний директор.
Зосередження на практичних завданнях та послідовному аналізі проектів замість великої теорії. Реалізуй свої мрії про керівну посаду після завершення курсу.
Вот как это делается с помощью класса FileReader :
FileReader reader = new FileReader(new File("D:\Scanner.txt")); Scanner scanner = new Scanner(reader);
Конструктор public Scanner(InputStream source)
Этот конструктор создает сканер, с помощью которого можно получить значения из указанного входного потока. Байты из такого потока преобразуются в символы (с использованием набора символов по умолчанию для базовой платформы).
Также есть вариант конструктора, который позволяет получать значения из входного потока, преобразовывая байты в символы с использованием набора символов, указанного пользователем:
public Scanner(InputStream source, String charsetName)
Если указанный набор символов не существует, выбрасывается исключительная ситуация IllegalArgumentException . Это справедливо для всех вариантов методов с указанием аргумента charsetName .
Например, для потока стандартного ввода он объявляется просто:
Scanner scanner = new Scanner(System.in)
Конструктор public Scanner(File source) throws FileNotFoundException
Создает сканер, который позволяет получать значения из указанного объекта класса java.io.File . Если указанный файл не найден, возникает исключительная ситуация FileNotFoundException . Символы преобразовываются в байты с использованием набора символов по умолчанию для базовой платформы.
Курс Управління командою в бізнесі.
Онлайн-курс для ефективного управління командою, спрямований на створення проактивних та самостійних команд, де мікроменеджмент не потрібний.
Чтобы использовать произвольный набор символов, укажите его во втором аргументе:
public Scanner(File source, String charsetName) throws FileNotFoundException
Scanner scanner = new Scanner(new File(«D:\Scanner.txt»));
Как пользоваться scanner java
JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
«Программистами не рождаются» © 2023 JavaRush
Скачивайте наши приложения
«Программистами не рождаются» © 2023 JavaRush
Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.
