Spec-Zone.ru › OpenJDK 8

Класс Scanner

  • java.lang.Object
    • java.util.Scanner
Все реализованные интерфейсы:
Closeable, AutoCloseable, Iterator<String>

public final class Scanner
extends Object
implements Iterator<String>, Closeable

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

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

Например, этот код позволяет пользователю читать число из файла:

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

В качестве другого примера, этот код позволяет присваивать значения различных типов из записей в файле:

Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
    long aLong = sc.nextLong();
}

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

String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();

выводит следующий результат:

1
2
red
blue

Этот же результат может быть получен с помощью кода, который использует регулярное выражение для анализа всех четырех токенов сразу:

String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
    System.out.println(result.group(i));
s.close();

Разделитель по умолчанию, используемый сканером, соответствует пробелам, определяемым методом Character.isWhitespace. Метод reset() сбросит значение разделителя сканера на стандартный разделитель пробелов независимо от того, был ли он изменён ранее.

Операция сканирования может блокироваться в ожидании ввода.

Методы next() и hasNext(), а также их аналоги для примитивных типов (например, nextInt() и hasNextInt()) сначала пропускают любой ввод, соответствующий шаблону разделителя, а затем пытаются вернуть следующий токен. Оба метода могут блокироваться в ожидании дополнительного ввода. Блокирование метода hasNext не связано с блокировкой соответствующего метода next.

Методы findInLine(java.lang.String), findWithinHorizon(java.lang.String, int) и skip(java.util.regex.Pattern) работают независимо от шаблона разделителя. Эти методы попытаются сопоставить указанный шаблон без учёта разделителей во входных данных и, таким образом, могут быть использованы в особых случаях, когда разделители не важны. Эти методы могут блокироваться в ожидании дальнейшего ввода.

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

В зависимости от типа шаблона разделителя, могут возвращаться пустые токены. Например, шаблон "\\s+" не вернёт пустых токенов, так как он соответствует нескольким экземплярам разделителя. Шаблон разделителя "\\s" может возвращать пустые токены, так как он пропускает только один пробел за раз.

Сканер может читать текст из любого объекта, реализующего интерфейс Readable. Если вызов метода Readable.read(java.nio.CharBuffer) базового объекта, реализующего интерфейс, выбросит исключение IOException, то сканер предполагает, что достигнут конец ввода. Последнее исключение, выброшенное базовым объектом, реализующим интерфейс, можно получить с помощью метода ioException().

При закрытии сканера, он закроет свой источник ввода, если источник реализует интерфейс Closeable.

Сканер не является потокобезопасным без внешней синхронизации.

Если не указано иное, передача параметра null в любой метод сканера вызовет исключение NullPointerException.

Сканер по умолчанию интерпретирует числа как десятичные, если не указано иное с помощью метода useRadix(int). Метод reset() сбросит значение радикса сканера на 10 независимо от того, изменялось ли оно ранее.

Локализованные числа

Экземпляр этого класса способен сканировать числа в стандартных форматах, а также в форматах локали сканера. Начальная локали сканера - это значение, возвращаемое методом Locale.getDefault(Locale.Category.FORMAT); она может быть изменена с помощью метода useLocale(java.util.Locale). Метод reset() сбросит значение локали сканера на начальную локали независимо от того, изменялось ли оно ранее.

Локализованные форматы определяются следующими параметрами, которые для конкретной локали берутся из объекта DecimalFormat этой локали, df, и объекта DecimalFormatSymbols, dfs.

LocalGroupSeparator
Символ, используемый для разделения групп тысяч, т.е. dfs.getGroupingSeparator()
LocalDecimalSeparator
Символ, используемый для десятичной точки, т.е. dfs.getDecimalSeparator()
LocalPositivePrefix
Строка, предшествующая положительному числу (может быть пустой), т.е. df.getPositivePrefix()
LocalPositiveSuffix
Строка, следующая за положительным числом (может быть пустой), т.е. df.getPositiveSuffix()
LocalNegativePrefix
Строка, предшествующая отрицательному числу (может быть пустой), т.е. df.getNegativePrefix()
LocalNegativeSuffix
Строка, следующая за отрицательным числом (может быть пустой), т.е. df.getNegativeSuffix()
LocalNaN
Строка, представляющая число не является числом для чисел с плавающей запятой, т.е. dfs.getNaN()
LocalInfinity
Строка, представляющая бесконечность для чисел с плавающей запятой, т.е. dfs.getInfinity()

Синтаксис чисел

Строки, которые могут быть проанализированы как числа экземпляром этого класса, определяются грамматикой регулярного выражения, где Rmax - это наибольшая цифра в используемом радиксе (например, Rmax - это 9 в десятичной системе).

NonAsciiDigit:
Не-ASCII символ c, для которого Character.isDigit(c) возвращает true
Non0Digit:
[1-Rmax] | NonASCIIDigit
Digit:
[0-Rmax] | NonASCIIDigit
GroupedNumeral:
( Non0Digit Digit? Digit?
( LocalGroupSeparator Digit Digit Digit )+ )
Numeral:
( ( Digit+ ) | GroupedNumeral )
Целое число:
( [-+]? ( Numeral ) )
| LocalPositivePrefix Numeral LocalPositiveSuffix
| LocalNegativePrefix Numeral LocalNegativeSuffix
DecimalNumeral:
Numeral
| Numeral LocalDecimalSeparator Digit*
| LocalDecimalSeparator Digit+
Exponent:
( [eE] [+-]? Digit+ )
Десятичное число:
( [-+]? DecimalNumeral Exponent? )
| LocalPositivePrefix DecimalNumeral LocalPositiveSuffix Exponent?
| LocalNegativePrefix DecimalNumeral LocalNegativeSuffix Exponent?
HexFloat:
[-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+ ([pP][-+]?[0-9]+)?
NonNumber:
NaN | LocalNan | Infinity | LocalInfinity
SignedNonNumber:
( [-+]? NonNumber )
| LocalPositivePrefix NonNumber LocalPositiveSuffix
| LocalNegativePrefix NonNumber LocalNegativeSuffix
Число с плавающей точкой:
Decimal | HexFloat | SignedNonNumber

Пробелы не учитываются в вышеприведённых регулярных выражениях.

Since:
1.5

Конструкторы

Конструктор и описание
Scanner(File source)

Создаёт новый Scanner, который генерирует значения, считанные из указанного файла.

Scanner(File source, String charsetName)

Создаёт новый Scanner, который генерирует значения, считанные из указанного файла.

Scanner(InputStream source)

Создаёт новый Scanner, который генерирует значения, считанные из указанного потока ввода.

Scanner(InputStream source, String charsetName)

Создаёт новый Scanner, который генерирует значения, считанные из указанного потока ввода.

Scanner(Path source)

Создаёт новый Scanner, который генерирует значения, считанные из указанного файла.

Scanner(Path source, String charsetName)

Создаёт новый Scanner, который генерирует значения, считанные из указанного файла.

Scanner(Readable source)

Создаёт новый Scanner, который генерирует значения, считанные из указанного источника.

Scanner(ReadableByteChannel source)

Создаёт новый Scanner, который генерирует значения, считанные из указанного канала.

Scanner(ReadableByteChannel source, String charsetName)

Создаёт новый Scanner, который генерирует значения, считанные из указанного канала.

Scanner(String source)

Создаёт новый Scanner, который генерирует значения, считанные из указанной строки.

Методы

Модификатор и тип Метод и описание
void close()

Закрывает этот сканер.

Pattern delimiter()

Возвращает Pattern , которое в настоящее время используется этим Scanner для сопоставления разделителей.

String findInLine(Pattern pattern)

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

String findInLine(String pattern)

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

String findWithinHorizon(Pattern pattern, int horizon)

Попытка найти следующее вхождение указанного шаблона.

String findWithinHorizon(String pattern, int horizon)

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

boolean hasNext()

Возвращает true, если в входных данных этого сканера есть еще один токен.

boolean hasNext(Pattern pattern)

Возвращает true, если следующий полный токен соответствует указанному шаблону.

boolean hasNext(String pattern)

Возвращает true, если следующий токен соответствует шаблону, построенному из указанной строки.

boolean hasNextBigDecimal()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как BigDecimal с использованием метода nextBigDecimal().

boolean hasNextBigInteger()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как BigInteger в стандартном формате с использованием метода nextBigInteger().

boolean hasNextBigInteger(int radix)

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как BigInteger в указанном формате с использованием метода nextBigInteger().

boolean hasNextBoolean()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа boolean с использованием нечувствительного к регистру шаблона, созданного из строки "true|false".

boolean hasNextByte()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа byte в стандартном формате с использованием метода nextByte().

boolean hasNextByte(int radix)

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа byte в указанном формате с использованием метода nextByte().

boolean hasNextDouble()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа double с использованием метода nextDouble().

boolean hasNextFloat()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа float с использованием метода nextFloat().

boolean hasNextInt()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа int в стандартном формате с использованием метода nextInt().

boolean hasNextInt(int radix)

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа int в указанном формате с использованием метода nextInt().

boolean hasNextLine()

Возвращает true, если в входных данных этого сканера есть другая строка.

boolean hasNextLong()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа long в стандартном формате с использованием метода nextLong().

boolean hasNextLong(int radix)

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа long в указанном формате с использованием метода nextLong().

boolean hasNextShort()

Возвращает IOException , последний выброшенный сканером подчинённым Readable.

boolean hasNextShort(int radix)

Возвращает локаль этого сканера.

IOException ioException()

Возвращает результат сопоставления последней операции сканирования, выполненной этим сканером.

Locale locale()

Возвращает следующий целый токен из этого сканера.

MatchResult match()

Возвращает следующий токен, если он соответствует указанному шаблону.

String next()

Находит и возвращает следующий полный токен из этого сканера.

String next(Pattern pattern)

Возвращает следующий токен, если он соответствует указанному шаблону.

String next(String pattern)

Возвращает следующий токен, если он соответствует шаблону, построенному из указанной строки.

BigDecimal nextBigDecimal()

Сканирует следующий токен ввода как BigDecimal.

BigInteger nextBigInteger()

Сканирует следующий токен ввода как BigInteger.

BigInteger nextBigInteger(int radix)

Сканирует следующий токен ввода как BigInteger.

boolean nextBoolean()

Сканирует следующий токен ввода в значение типа boolean и возвращает это значение.

byte nextByte()

Сканирует следующий токен ввода как byte.

byte nextByte(int radix)

Сканирует следующий токен ввода как byte.

double nextDouble()

Сканирует следующий токен ввода как double.

float nextFloat()

Сканирует следующий токен ввода как float.

int nextInt()

Сканирует следующий токен ввода как int.

int nextInt(int radix)

Сканирует следующий токен ввода как int.

String nextLine()

Перемещает этот сканер за текущую строку и возвращает пропущенные входные данные.

long nextLong()

Сканирует следующий токен ввода как long.

long nextLong(int radix)

Сканирует следующий токен ввода как long.

short nextShort()

Сканирует следующий токен ввода как short.

short nextShort(int radix)

Сканирует следующий токен ввода как short.

int radix()

Возвращает стандартный формат счисления сканера.

void remove()

Операция удаления не поддерживается этой реализацией Iterator.

Scanner reset()

Сбрасывает этот сканер.

Scanner skip(Pattern pattern)

Пропускает входные данные, соответствующие указанному шаблону, игнорируя разделители.

Scanner skip(String pattern)

Пропускает входные данные, соответствующие шаблону, построенному из указанной строки.

String toString()

Возвращает строковое представление этого Scanner.

Scanner useDelimiter(Pattern pattern)

Устанавливает разделитель сканера в указанный шаблон.

Scanner useDelimiter(String pattern)

Устанавливает разделитель сканера в шаблон, построенный из указанной String.

Scanner useLocale(Locale locale)

Устанавливает локаль сканера в указанную локаль.

Scanner useRadix(int radix)

Устанавливает стандартный формат счисления сканера в указанный формат.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Методы, унаследованные от интерфейса java.util.Iterator

forEachRemaining

Конструкторы

Scanner

public Scanner(Readable source)

Создаёт новый Scanner, который генерирует значения, считанные из указанного источника.

Параметры:
source - Источник символов, реализующий интерфейс Readable

Scanner

public Scanner(InputStream source)

Создаёт новый Scanner, который генерирует значения, считанные из указанного потока ввода. Байты из потока преобразуются в символы с использованием кодировки по умолчанию платформы по умолчанию.

Параметры:
source - Поток ввода для сканирования

Scanner

public Scanner(InputStream source,
               String charsetName)

Создаёт новый Scanner, который генерирует значения, считанные из указанного потока ввода. Байты из потока преобразуются в символы с использованием указанной кодировки.

Параметры:
source - Поток ввода для сканирования
charsetName - Тип кодирования, используемый для преобразования байтов из потока в символы для сканирования
Исключения:
IllegalArgumentException - если указанного набора символов не существует

Scanner

public Scanner(File source)
        throws FileNotFoundException

Создаёт новый Scanner, который генерирует значения, считанные из указанного файла. Байты из файла преобразуются в символы с использованием кодировки по умолчанию платформы по умолчанию.

Параметры:
source - Файл для сканирования
Исключения:
FileNotFoundException - если источник не найден

Scanner

public Scanner(File source,
               String charsetName)
        throws FileNotFoundException

Создаёт новый Scanner, который генерирует значения, считанные из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.

Параметры:
source - Файл для сканирования
charsetName - Тип кодирования, используемый для преобразования байтов из файла в символы для сканирования
Исключения:
FileNotFoundException - если источник не найден
IllegalArgumentException - если указанная кодировка не найдена

Scanner

public Scanner(Path source)
        throws IOException

Создаёт новый Scanner, который генерирует значения, считанные из указанного файла. Байты из файла преобразуются в символы с использованием кодировки по умолчанию платформы по умолчанию.

Параметры:
source - путь к сканируемому файлу
Исключения:
IOException - если при открытии источника произошла ошибка ввода-вывода
С тех пор:
1.7

Scanner

public Scanner(Path source,
               String charsetName)
        throws IOException

Создаёт новый Scanner, который генерирует значения, считанные из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.

Параметры:
source - путь к сканируемому файлу
charsetName - Тип кодирования, используемый для преобразования байтов из файла в символы для сканирования
Исключения:
IOException - если при открытии источника произошла ошибка ввода-вывода
IllegalArgumentException - если указанная кодировка не найдена
С тех пор:
1.7

Scanner

public Scanner(String source)

Создаёт новый Scanner, который генерирует значения, считанные из указанной строки.

Параметры:
source - Строка для сканирования

Scanner

public Scanner(ReadableByteChannel source)

Создаёт новый Scanner, который генерирует значения, считанные из указанного канала. Байты из источника преобразуются в символы с использованием кодировки по умолчанию платформы по умолчанию.

Параметры:
source - Канал для сканирования

Scanner

public Scanner(ReadableByteChannel source,
               String charsetName)

Создаёт новый Scanner, который генерирует значения, считанные из указанного канала. Байты из источника преобразуются в символы с использованием указанной кодировки.

Параметры:
source - Канал для сканирования
charsetName - Тип кодирования, используемый для преобразования байтов из канала в символы для сканирования
Исключения:
IllegalArgumentException - если указанного набора символов не существует

Методы

close

public void close()

Закрывает этот сканер.

Если этот сканер ещё не закрыт, и его базовый readable также реализует интерфейс Closeable, то вызывается метод close readable. Если этот сканер уже закрыт, вызов этого метода не повлияет на него.

Попытка выполнения операций поиска после закрытия сканера приведёт к исключению IllegalStateException.

Определено в:
close в интерфейсе Closeable
Определено в:
close в интерфейсе AutoCloseable

ioException

public IOException ioException()

Возвращает IOException последнюю исключительную ситуацию, сгенерированную данным сканером Scanner's underlying Readable. Этот метод возвращает null в случае отсутствия такого исключения.

Возвращает:
последнее исключение, сгенерированное readable сканера

delimiter

public Pattern delimiter()

Возвращает Pattern , используемый в данный момент этим сканером Scanner для сопоставления разделителей.

Возвращает:
шаблон разделителя этого сканера.

useDelimiter

public Scanner useDelimiter(Pattern pattern)

Устанавливает шаблон разделителя этого сканера на указанный шаблон.

Параметры:
pattern - шаблон разделителя
Возвращает:
этот сканер

useDelimiter

public Scanner useDelimiter(String pattern)

Устанавливает шаблон разделителя этого сканера на шаблон, созданный из указанной String.

Вызов этого метода в форме useDelimiter(pattern) ведет себя точно так же, как вызов useDelimiter(Pattern.compile(pattern)).

Вызов метода reset() установит разделитель сканера на значение по умолчанию.

Параметры:
pattern - строка, определяющая шаблон разделителя
Возвращает:
этот сканер

locale

public Locale locale()

Возвращает локаль этого сканера.

Локаль сканера влияет на многие элементы его стандартных выражений регулярных соответствий для примитивных типов; см. локализованные числа выше.

Возвращает:
локаль этого сканера

useLocale

public Scanner useLocale(Locale locale)

Устанавливает локаль этого сканера на указанную локаль.

Локаль сканера влияет на многие элементы его стандартных выражений регулярных соответствий для примитивных типов; см. локализованные числа выше.

Вызов метода reset() установит локаль сканера на начальную локаль.

Параметры:
locale - строка, определяющая локаль для использования
Возвращает:
этот сканер

radix

public int radix()

Возвращает базу по умолчанию для этого сканера.

База сканера влияет на элементы его стандартных выражений регулярных соответствий для чисел; см. локализованные числа выше.

Возвращает:
базу по умолчанию этого сканера

useRadix

public Scanner useRadix(int radix)

Устанавливает базу по умолчанию для этого сканера на указанную базу.

База сканера влияет на элементы его стандартных выражений регулярных соответствий для чисел; см. локализованные числа выше.

Если база меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбрасывается IllegalArgumentException .

Вызов метода reset() установит базу сканера на 10.

Параметры:
radix - база для сканирования чисел
Возвращает:
этот сканер
Исключения:
IllegalArgumentException - если база не входит в допустимый диапазон

match

public MatchResult match()

Возвращает результат сопоставления последней операции сканирования, выполненной этим сканером. Этот метод выбрасывает IllegalStateException , если сопоставление не было выполнено или последнее сопоставление не было успешным.

Различные next методы Scanner делают результат сопоставления доступным, если они завершаются без исключений. Например, после вызова метода nextInt(), вернувшего целое число, этот метод возвращает MatchResult для поиска регулярного выражения Integer, определенного выше. Аналогично методы findInLine(java.lang.String), findWithinHorizon(java.lang.String, int) и skip(java.util.regex.Pattern) сделают результат сопоставления доступным, если они завершатся успешно.

Возвращает:
результат сопоставления последней операции сопоставления
Исключения:
IllegalStateException - если результат сопоставления недоступен

toString

public String toString()

Возвращает строковое представление этого Scanner. Строковое представление Scanner содержит информацию, которая может быть полезна для отладки. Точный формат не определён.

Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого сканера

hasNext

public boolean hasNext()

Возвращает true, если этот сканер имеет ещё один токен в своём вводе. Этот метод может блокироваться во время ожидания ввода для сканирования. Сканер не перемещается мимо любого ввода.

Указано:
hasNext в интерфейсе Iterator<String>
Возвращает:
true тогда и только тогда, когда у этого сканера есть другой токен
Исключения:
IllegalStateException - если этот сканер закрыт
См. также:
Iterator

next

public String next()

Находит и возвращает следующий полный токен из этого сканера. Полный токен предшествует и следует за вводом, который соответствует шаблону разделителя. Этот метод может блокироваться, ожидая ввода для сканирования, даже если предыдущее обращение к hasNext() вернуло true.

Указано:
next в интерфейсе Iterator<String>
Возвращает:
следующий токен
Исключения:
NoSuchElementException - если больше токенов недоступно
IllegalStateException - если этот сканер закрыт
См. также:
Iterator

remove

public void remove()

Операция remove не поддерживается этой реализацией Iterator.

Указано:
remove в интерфейсе Iterator<String>
Исключения:
UnsupportedOperationException - если этот метод вызван.
См. также:
Iterator

hasNext

public boolean hasNext(String pattern)

Возвращает true, если следующий токен соответствует шаблону, созданному из указанной строки. Сканер не перемещается дальше по вводу.

Вызов этого метода в форме hasNext(pattern) ведет себя точно так же, как вызов hasNext(Pattern.compile(pattern)).

Параметры:
pattern - строка, определяющая шаблон для сканирования
Возвращает:
true, если и только если у этого сканера есть другой токен, соответствующий указанному шаблону
Исключения:
IllegalStateException - если этот сканер закрыт

next

public String next(String pattern)

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

Вызов этого метода в форме next(pattern) ведет себя точно так же, как вызов next(Pattern.compile(pattern)).

Параметры:
pattern - строка, определяющая шаблон для сканирования
Возвращает:
следующий токен
Исключения:
NoSuchElementException - если такие токены недоступны
IllegalStateException - если этот сканер закрыт

hasNext

public boolean hasNext(Pattern pattern)

Возвращает true, если следующий полный токен соответствует указанному шаблону. Полный токен предшествует и следует за вводом, который соответствует шаблону разделителя. Этот метод может блокироваться, ожидая ввода. Сканер не перемещается дальше по вводу.

Параметры:
pattern - шаблон для сканирования
Возвращает:
true, если и только если у этого сканера есть другой токен, соответствующий указанному шаблону
Исключения:
IllegalStateException - если этот сканер закрыт

next

public String next(Pattern pattern)

Возвращает следующий токен, если он соответствует указанному шаблону. Этот метод может блокироваться, ожидая ввода для сканирования, даже если предыдущее обращение к hasNext(Pattern) вернуло true. Если соответствие успешно, сканер перемещается дальше по вводу, который соответствовал шаблону.

Параметры:
pattern - шаблон для сканирования
Возвращает:
следующий токен
Исключения:
NoSuchElementException - если больше токенов недоступно
IllegalStateException - если этот сканер закрыт

hasNextLine

public boolean hasNextLine()

Возвращает true, если в вводе этого сканера есть другая строка. Этот метод может блокироваться, ожидая ввода. Сканер не перемещается дальше по вводу.

Возвращает:
true, если и только если у этого сканера есть другая строка ввода
Исключения:
IllegalStateException - если этот сканер закрыт

nextLine

public String nextLine()

Перемещает этот сканер за текущую строку и возвращает пропущенный ввод. Этот метод возвращает остаток текущей строки, исключая любой разделитель строк в конце. Позиция устанавливается в начало следующей строки.

Поскольку этот метод продолжает поиск по вводу в поисках разделителя строк, он может буферизовать весь ввод, ища строку для пропуска, если разделители строк отсутствуют.

Возвращает:
строка, которая была пропущена
Исключения:
NoSuchElementException - если строка не найдена
IllegalStateException - если этот сканер закрыт

findInLine

public String findInLine(String pattern)

Пытается найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители.

Вызов этого метода в форме findInLine(pattern) ведет себя точно так же, как вызов findInLine(Pattern.compile(pattern)).

Параметры:
pattern - строка, определяющая шаблон для поиска
Возвращает:
текст, который соответствовал указанному шаблону
Исключения:
IllegalStateException - если этот сканер закрыт

findInLine

public String findInLine(Pattern pattern)

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

Поскольку этот метод продолжает поиск по вводу в поисках указанного шаблона, он может буферизовать весь ввод в поисках нужного токена, если разделители строк отсутствуют.

Параметры:
pattern - шаблон для сканирования
Возвращает:
текст, который соответствовал указанному шаблону
Исключения:
IllegalStateException - если этот сканер закрыт

findWithinHorizon

public String findWithinHorizon(String pattern,
                                int horizon)

Пытается найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители.

Вызов этого метода в форме findWithinHorizon(pattern) ведет себя точно так же, как вызов findWithinHorizon(Pattern.compile(pattern, horizon)).

Параметры:
pattern - строка, определяющая шаблон для поиска
horizon - горизонт поиска
Возвращает:
текст, который соответствовал указанному шаблону
Исключения:
IllegalStateException - если этот сканер закрыт
IllegalArgumentException - если горизонт отрицательный

findWithinHorizon

public String findWithinHorizon(Pattern pattern,
                                int horizon)

Пытается найти следующее вхождение указанного шаблона.

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

Сканер никогда не будет искать более horizon кодов символов за пределами своей текущей позиции. Обратите внимание, что результат совпадения может быть усечен горизонтом; то есть произвольный результат совпадения мог быть другим, если горизонт был больше. Сканер обрабатывает горизонт как прозрачную, не закрепляющую границу (см. Matcher.useTransparentBounds(boolean) и Matcher.useAnchoringBounds(boolean)).

Если горизонт 0, то горизонт игнорируется, и этот метод продолжает поиск по вводу в поисках указанного шаблона без ограничений. В этом случае он может буферизовать весь ввод в поисках шаблона.

Если горизонт отрицательный, то генерируется исключение IllegalArgumentException.

Параметры:
pattern - шаблон для сканирования
horizon - горизонт поиска
Возвращает:
текст, который соответствовал указанному шаблону
Исключения:
IllegalStateException - если этот сканер закрыт
IllegalArgumentException - если горизонт отрицательный

skip

public Scanner skip(Pattern pattern)

Пропускает ввод, соответствующий указанному шаблону, игнорируя разделители. Этот метод пропустит ввод, если закрепленное соответствие указанному шаблону будет успешным.

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

Поскольку этот метод ищет соответствие указанному шаблону, начиная с текущей позиции сканера, шаблоны, которые могут соответствовать большому объему ввода (например, ".*"), могут привести к буферизации большого объема ввода сканером.

Обратите внимание, что можно пропустить что-либо, не рискуя NoSuchElementException с помощью шаблона, который может ничего не соответствовать, например, sc.skip("[ \t]*").

Параметры:
pattern - строка, определяющая шаблон для пропуска
Возвращает:
сканер
Исключения:
NoSuchElementException - если указанный шаблон не найден
IllegalStateException - если этот сканер закрыт

skip

public Scanner skip(String pattern)

Пропускает ввод, соответствующий шаблону, созданному из указанной строки.

Вызов этого метода в форме skip(pattern) ведет себя точно так же, как вызов skip(Pattern.compile(pattern)).

Параметры:
pattern - строка, определяющая шаблон для пропуска
Возвращает:
сканер
Исключения:
IllegalStateException - если этот сканер закрыт

hasNextBoolean

public boolean hasNextBoolean()

Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как булево значение с помощью нечувствительного к регистру шаблона, созданного из строки "true|false". Сканер не перемещается дальше по вводу, который соответствовал.

Возвращает:
true, если и только если следующий токен сканера — это корректное булево значение
Исключения:
IllegalStateException - если этот сканер закрыт

nextBoolean

public boolean nextBoolean()

Сканирует следующий токен входных данных в булево значение и возвращает это значение. Этот метод выбросит InputMismatchException , если следующий токен не может быть преобразован в действительное булево значение. Если соответствие найдено, сканер пропускает входные данные, которые соответствуют.

Возвращает:
булево значение, прочитанное из входных данных
Выбрасывает:
InputMismatchException - если следующий токен не является допустимым булевым значением
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

hasNextByte

public boolean hasNextByte()

Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа byte в стандартной системе счисления с помощью метода nextByte(). Сканер не пропускает какие-либо входные данные.

Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа byte
Выбрасывает:
IllegalStateException - если этот сканер закрыт

hasNextByte

public boolean hasNextByte(int radix)

Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа byte в указанной системе счисления с помощью метода nextByte(). Сканер не пропускает какие-либо входные данные.

Параметры:
radix - система счисления, используемая для интерпретации токена как значения типа byte
Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа byte
Выбрасывает:
IllegalStateException - если этот сканер закрыт

nextByte

public byte nextByte()

Сканирует следующий токен ввода как byte.

Вызов этого метода в форме nextByte() ведет себя точно так же, как вызов nextByte(radix), где radix - это стандартная система счисления этого сканера.

Возвращает:
сканированное значение типа byte из входных данных
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Integer или находится вне допустимого диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

nextByte

public byte nextByte(int radix)

Сканирует следующий токен ввода как byte. Этот метод выбросит InputMismatchException , если следующий токен не может быть преобразован в допустимое значение типа byte, как описано ниже. Если преобразование успешно выполнено, сканер пропускает входные данные, которые соответствуют.

Если следующий токен соответствует регулярному выражению Integer, определённому выше, то токен преобразуется в значение типа byte так, как если бы были удалены все локально-зависимые префиксы, разделители групп и локально-зависимые суффиксы, а затем не-ASCII цифры были преобразованы в ASCII цифры через Character.digit, в начало добавляется знак минус (-) если присутствовали локально-зависимые префиксы и суффиксы отрицательных чисел, а полученная строка передаётся в Byte.parseByte с указанной системой счисления.

Параметры:
radix - система счисления, используемая для интерпретации токена как значения типа byte
Возвращает:
сканированное значение типа byte из входных данных
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Integer или находится вне допустимого диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

hasNextShort

public boolean hasNextShort()

Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа short в стандартной системе счисления с помощью метода nextShort(). Сканер не пропускает какие-либо входные данные.

Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа short в стандартной системе счисления
Выбрасывает:
IllegalStateException - если этот сканер закрыт

hasNextShort

public boolean hasNextShort(int radix)

Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа short в указанной системе счисления с помощью метода nextShort(). Сканер не пропускает какие-либо входные данные.

Параметры:
radix - система счисления, используемая для интерпретации токена как значения типа short
Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа short в указанной системе счисления
Выбрасывает:
IllegalStateException - если этот сканер закрыт

nextShort

public short nextShort()

Сканирует следующий токен ввода как short.

Вызов этого метода в форме nextShort() ведет себя точно так же, как вызов nextShort(radix), где radix - это стандартная система счисления этого сканера.

Возвращает:
сканированное значение типа short из входных данных
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Integer или находится вне допустимого диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

nextShort

public short nextShort(int radix)

Сканирует следующий токен ввода как short. Этот метод выбросит InputMismatchException , если следующий токен не может быть преобразован в допустимое значение типа short, как описано ниже. Если преобразование успешно выполнено, сканер пропускает входные данные, которые соответствуют.

Если следующий токен соответствует регулярному выражению Integer, определённому выше, то токен преобразуется в значение типа short так, как если бы были удалены все локально-зависимые префиксы, разделители групп и локально-зависимые суффиксы, а затем не-ASCII цифры были преобразованы в ASCII цифры через Character.digit, в начало добавляется знак минус (-) если присутствовали локально-зависимые префиксы и суффиксы отрицательных чисел, а полученная строка передаётся в Short.parseShort с указанной системой счисления.

Параметры:
radix - система счисления, используемая для интерпретации токена как значения типа short
Возвращает:
сканированное значение типа short из входных данных
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Integer или находится вне допустимого диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

hasNextInt

public boolean hasNextInt()

Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа int в стандартной системе счисления с помощью метода nextInt(). Сканер не пропускает какие-либо входные данные.

Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа int
Выбрасывает:
IllegalStateException - если этот сканер закрыт

hasNextInt

public boolean hasNextInt(int radix)

Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа int в указанной системе счисления с помощью метода nextInt(). Сканер не пропускает какие-либо входные данные.

Параметры:
radix - система счисления, используемая для интерпретации токена как значения типа int
Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа int
Выбрасывает:
IllegalStateException - если этот сканер закрыт

nextInt

public int nextInt()

Сканирует следующий токен ввода как int.

Вызов этого метода в форме nextInt() ведет себя точно так же, как вызов nextInt(radix), где radix - это стандартная система счисления этого сканера.

Возвращает:
сканированное значение типа int из входных данных
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Integer или находится вне допустимого диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

nextInt

public int nextInt(int radix)

Сканирует следующий токен ввода как int. Этот метод выбросит InputMismatchException , если следующий токен не может быть преобразован в допустимое значение типа int, как описано ниже. Если преобразование успешно выполнено, сканер пропускает входные данные, которые соответствуют.

Если следующий токен соответствует регулярному выражению Integer, определённому выше, то токен преобразуется в значение типа int так, как если бы были удалены все локально-зависимые префиксы, разделители групп и локально-зависимые суффиксы, а затем не-ASCII цифры были преобразованы в ASCII цифры через Character.digit, в начало добавляется знак минус (-) если присутствовали локально-зависимые префиксы и суффиксы отрицательных чисел, а полученная строка передаётся в Integer.parseInt с указанной системой счисления.

Параметры:
radix - система счисления, используемая для интерпретации токена как значения типа int
Возвращает:
сканированное значение типа int из входных данных
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Integer или находится вне допустимого диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

hasNextLong

public boolean hasNextLong()

Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа long в стандартной системе счисления с помощью метода nextLong(). Сканер не пропускает какие-либо входные данные.

Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа long
Выбрасывает:
IllegalStateException - если этот сканер закрыт

hasNextLong

public boolean hasNextLong(int radix)

Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа long в указанной системе счисления с помощью метода nextLong(). Сканер не пропускает какие-либо входные данные.

Параметры:
radix - система счисления, используемая для интерпретации токена как значения типа long
Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа long
Выбрасывает:
IllegalStateException - если этот сканер закрыт

nextLong

public long nextLong()

Сканирует следующий токен входных данных как long.

Вызов этого метода в форме nextLong() ведет себя точно так же, как вызов nextLong(radix), где radix — это основание по умолчанию для этого сканера.

Возвращает:
сканированное из входных данных long
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Integer или выходит за пределы диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

nextLong

public long nextLong(int radix)

Сканирует следующий токен входных данных как long. Этот метод выбросит InputMismatchException, если следующий токен не может быть преобразован в допустимое значение long, как описано ниже. Если преобразование выполнено успешно, сканер переходит к входным данным, которые соответствовали.

Если следующий токен соответствует регулярному выражению Integer, определённому выше, то токен преобразуется в значение long так, как если бы все локально-специфичные префиксы, разделители групп и локально-специфичные суффиксы были удалены, затем не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, отрицательный знак (-) был добавлен в начало, если были присутствуют локально-специфичные префиксы и суффиксы отрицательного числа, и полученная строка была передана в Long.parseLong с указанным основанием.

Параметры:
radix - основание, используемое для интерпретации токена как целого значения
Возвращает:
сканированное из входных данных long
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Integer или выходит за пределы диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

hasNextFloat

public boolean hasNextFloat()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение float с помощью метода nextFloat(). Сканер не переходит к каким-либо входным данным.

Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением float
Выбрасывает:
IllegalStateException - если этот сканер закрыт

nextFloat

public float nextFloat()

Сканирует следующий токен входных данных как float. Этот метод выбросит InputMismatchException, если следующий токен не может быть преобразован в допустимое значение float, как описано ниже. Если преобразование выполнено успешно, сканер переходит к входным данным, которые соответствовали.

Если следующий токен соответствует регулярному выражению Float, определённому выше, то токен преобразуется в значение float так, как если бы все локально-специфичные префиксы, разделители групп и локально-специфичные суффиксы были удалены, затем не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, отрицательный знак (-) был добавлен в начало, если были присутствуют локально-специфичные префиксы и суффиксы отрицательного числа, и полученная строка была передана в Float.parseFloat. Если токен соответствует локализованным строкам NaN или бесконечности, то «Nan» или «Infinity» соответственно передаются в Float.parseFloat.

Возвращает:
сканированное из входных данных float
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Float или выходит за пределы диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

hasNextDouble

public boolean hasNextDouble()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение double с помощью метода nextDouble(). Сканер не переходит к каким-либо входным данным.

Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением double
Выбрасывает:
IllegalStateException - если этот сканер закрыт

nextDouble

public double nextDouble()

Сканирует следующий токен входных данных как double. Этот метод выбросит InputMismatchException, если следующий токен не может быть преобразован в допустимое значение double. Если преобразование выполнено успешно, сканер переходит к входным данным, которые соответствовали.

Если следующий токен соответствует регулярному выражению Float, определённому выше, то токен преобразуется в значение double так, как если бы все локально-специфичные префиксы, разделители групп и локально-специфичные суффиксы были удалены, затем не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, отрицательный знак (-) был добавлен в начало, если были присутствуют локально-специфичные префиксы и суффиксы отрицательного числа, и полученная строка была передана в Double.parseDouble. Если токен соответствует локализованным строкам NaN или бесконечности, то «Nan» или «Infinity» соответственно передаются в Double.parseDouble.

Возвращает:
сканированное из входных данных double
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Float или выходит за пределы диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

hasNextBigInteger

public boolean hasNextBigInteger()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как BigInteger в основании по умолчанию с помощью метода nextBigInteger(). Сканер не переходит к каким-либо входным данным.

Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым BigInteger
Выбрасывает:
IllegalStateException - если этот сканер закрыт

hasNextBigInteger

public boolean hasNextBigInteger(int radix)

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как BigInteger в указанном основании с помощью метода nextBigInteger(). Сканер не переходит к каким-либо входным данным.

Параметры:
radix - основание, используемое для интерпретации токена как целого числа
Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым BigInteger
Выбрасывает:
IllegalStateException - если этот сканер закрыт

nextBigInteger

public BigInteger nextBigInteger()

Сканирует следующий токен входных данных как BigInteger.

Вызов этого метода в форме nextBigInteger() ведет себя точно так же, как вызов nextBigInteger(radix), где radix — это основание по умолчанию для этого сканера.

Возвращает:
сканированное из входных данных BigInteger
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Integer или выходит за пределы диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

nextBigInteger

public BigInteger nextBigInteger(int radix)

Сканирует следующий токен входных данных как BigInteger.

Если следующий токен соответствует регулярному выражению Integer, определённому выше, то токен преобразуется в значение BigInteger так, как если бы все разделители групп были удалены, не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, и полученная строка была передана в конструктор BigInteger(String, int) с указанным основанием.

Параметры:
radix - основание, используемое для интерпретации токена
Возвращает:
сканированное из входных данных BigInteger
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Integer или выходит за пределы диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

hasNextBigDecimal

public boolean hasNextBigDecimal()

Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как BigDecimal с помощью метода nextBigDecimal(). Сканер не переходит к каким-либо входным данным.

Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым BigDecimal
Выбрасывает:
IllegalStateException - если этот сканер закрыт

nextBigDecimal

public BigDecimal nextBigDecimal()

Сканирует следующий токен входных данных как BigDecimal.

Если следующий токен соответствует регулярному выражению Decimal, определённому выше, то токен преобразуется в значение BigDecimal так, как если бы все разделители групп были удалены, не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, и полученная строка была передана в конструктор BigDecimal(String).

Возвращает:
сканированное из входных данных BigDecimal
Выбрасывает:
InputMismatchException - если следующий токен не соответствует регулярному выражению Decimal или выходит за пределы диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

reset

public Scanner reset()

Сбрасывает этот сканер.

Сброс сканера отбрасывает всю его явную информацию о состоянии, которая могла быть изменена вызовами useDelimiter(java.util.regex.Pattern), useLocale(java.util.Locale) или useRadix(int).

Вызов этого метода в форме scanner.reset() ведет себя точно так же, как вызов

scanner.useDelimiter("\\p{javaWhitespace}+")
       .useLocale(Locale.getDefault(Locale.Category.FORMAT))
       .useRadix(10);
Возвращает:
этот сканер
С:
1.6

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API