Класс 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()) сначала пропускают любой ввод, соответствующий шаблону разделителя, а затем пытаются вернуть следующий токен. Оба метода могут блокироваться, ожидая дополнительного ввода. Блокирование метода сканирования не связано с блокированием сопутствующего метода проверки наличия следующего токена. Метод tokens() также может блокироваться, ожидая ввода.

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

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

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

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

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

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

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

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

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

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

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

Разделитель групп
Символ, используемый для разделения групп тысяч, т.е., dfs.getGroupingSeparator()
Десятичный разделитель
Символ, используемый для десятичной точки, т.е., dfs.getDecimalSeparator()
Положительный префикс
Строка, появляющаяся перед положительным числом (может быть пустой), т.е., df.getPositivePrefix()
Положительный суффикс
Строка, появляющаяся после положительного числа (может быть пустой), т.е., df.getPositiveSuffix()
Отрицательный префикс
Строка, появляющаяся перед отрицательным числом (может быть пустой), т.е., df.getNegativePrefix()
Отрицательный суффикс
Строка, появляющаяся после отрицательного числа (может быть пустой), т.е., df.getNegativeSuffix()
NaN
Строка, представляющая не число для значений с плавающей точкой, т.е., dfs.getNaN()
Бесконечность
Строка, представляющая бесконечность для значений с плавающей точкой, т.е., dfs.getInfinity()

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

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

НеASCII-цифра:
Не-ASCII символ c, для которого Character.isDigit(c) возвращает true
Не0-цифра:
[1-Rmax] | НеASCII-цифра
Цифра:
[0-Rmax] | НеASCII-цифра
Группа чисел:
( Не0-цифра Цифра? Цифра?
( Разделитель групп Цифра Цифра Цифра )+ )
Число:
( ( Цифра+ ) | Группа чисел )
Целое число:
( [-+]? ( Число ) )
| Положительный префикс Число Положительный суффикс
| Отрицательный префикс Число Отрицательный суффикс
Десятичное число:
Число
| Число Десятичный разделитель Цифра*
| Десятичный разделитель Цифра+
Показатель степени:
( [eE] [+-]? Цифра+ )
Десятичное число:
( [-+]? Десятичное число Показатель степени? )
| Положительный префикс Десятичное число Положительный суффикс Показатель степени?
| Отрицательный префикс Десятичное число Отрицательный суффикс Показатель степени?
Шестнадцатеричное число с плавающей точкой:
[-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+ ([pP][-+]?[0-9]+)?
Не число:
NaN | NaN | Infinity | Бесконечность
Отрицательное не число:
( [-+]? Не число )
| Положительный префикс Не число Положительный суффикс
| Отрицательный префикс Не число Отрицательный суффикс
Число с плавающей точкой:
Десятичное число | Шестнадцатеричное число с плавающей точкой | Отрицательное не число

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

С:
1.5

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

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

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

Scanner​(File source, String charsetName)

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

Scanner​(File source, Charset charset)

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

Scanner​(InputStream source)

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

Scanner​(InputStream source, String charsetName)

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

Scanner​(InputStream source, Charset charset)

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

Scanner​(Readable source)

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

Scanner​(String source)

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

Scanner​(ReadableByteChannel source)

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

Scanner​(ReadableByteChannel source, String charsetName)

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

Scanner​(ReadableByteChannel source, Charset charset)

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

Scanner​(Path source)

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

Scanner​(Path source, String charsetName)

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

Scanner​(Path source, Charset charset)

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

Методы

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

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

Pattern delimiter()

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

Stream<MatchResult> findAll​(String patString)

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

Stream<MatchResult> findAll​(Pattern pattern)

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

String findInLine​(String pattern)

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

String findInLine​(Pattern pattern)

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

String findWithinHorizon​(String pattern, int horizon)

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

String findWithinHorizon​(Pattern pattern, int horizon)

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

boolean hasNext()

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

boolean hasNext​(String pattern)

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

boolean hasNext​(Pattern pattern)

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

boolean hasNextBigDecimal()

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

boolean hasNextBigInteger()

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

boolean hasNextBigInteger​(int radix)

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

boolean hasNextBoolean()

Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как булевое значение с использованием нечувствительного к регистру шаблона, созданного из строки "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()

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

boolean hasNextShort​(int radix)

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

IOException ioException()

Возвращает последнее исключение, сгенерированное базовым Readable сканера Scanner.

Locale locale()

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

MatchResult match()

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

String next()

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

String next​(String pattern)

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

String next​(Pattern pattern)

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

BigDecimal nextBigDecimal()

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

BigInteger nextBigInteger()

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

BigInteger nextBigInteger​(int radix)

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

boolean nextBoolean()

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

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​(String pattern)

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

Scanner skip​(Pattern pattern)

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

Stream<String> tokens()

Возвращает поток разделителями-разделенных токенов из этого сканера.

String toString()

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

Scanner useDelimiter​(String pattern)

Устанавливает разделительную модель сканера на модель, созданную из указанного String.

Scanner useDelimiter​(Pattern pattern)

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

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(InputStream source,
               Charset charset)

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

Параметры:
source - поток ввода для сканирования
charset - кодировка, используемая для преобразования байтов из файла в символы для сканирования
С тех пор:
10

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(File source,
               Charset charset)
        throws IOException

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

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

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(Path source,
               Charset charset)
        throws IOException

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

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

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 - если указанный набор символов не существует

Scanner

public Scanner(ReadableByteChannel source,
               Charset charset)

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

Параметры:
source - канал для сканирования
charset - тип кодировки, используемый для преобразования байтов из канала в символы, подлежащие сканированию
С тех пор:
10

Методы

close

public void close()

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

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

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

Указано:
close в интерфейсе AutoCloseable
Указано:
close в интерфейсе Closeable

ioException

public IOException ioException()

Возвращает последнее сгенерированное IOException исключение, сгенерированное базовым Scanner сканера. Если такого исключения нет, возвращает null.

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

delimiter

public Pattern delimiter()

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

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

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 сканера создают результат сопоставления, если они завершаются без выброса исключения. Например, после вызова метода nextInt(), возвращающего int, этот метод возвращает MatchResult для поиска регулярного выражения Integer, определенного выше. Аналогично методы findInLine(), findWithinHorizon() и skip() предоставят результат сопоставления, если они успешно завершатся.

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

toString

public String toString()

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

Переопределяет:
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, если следующий токен в вводе этого сканера может быть интерпретирован как значение boolean с использованием нечувствительного к регистру шаблона, созданного из строки "true|false". Сканер не перемещается дальше ввода, который совпал.

Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым значением boolean
Выбрасывает:
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(). Сканер не перемещается дальше ввода.

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

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

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 со указанным основанием.

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

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

hasNextShort

public boolean hasNextShort()

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

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

hasNextShort

public boolean hasNextShort(int radix)

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

Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.

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

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 с указанным основанием.

Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.

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

hasNextInt

public boolean hasNextInt()

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

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

hasNextInt

public boolean hasNextInt(int radix)

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

Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.

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

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 с указанным основанием.

Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.

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

hasNextLong

public boolean hasNextLong()

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

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

hasNextLong

public boolean hasNextLong(int radix)

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

Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.

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

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 с указанным основанием.

Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.

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

hasNextFloat

public boolean hasNextFloat()

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

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

nextFloat

public float nextFloat()

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

Если следующий токен соответствует регулярному выражению 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(). Сканер не переходит к любому вводу.

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

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

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) со специфицированным основанием.

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

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

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(), useLocale() или useRadix().

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

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

tokens

public Stream<String> tokens()

Возвращает поток токенов, разделенных разделителями из этого сканера. Поток содержит те же токены, которые возвращались бы, начиная с текущего состояния этого сканера, вызовом метода next() повторно до тех пор, пока метод hasNext() не вернет false.

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

Сканирование начинается при инициализации терминальной операции потока, используя текущее состояние этого сканера. Последующие вызовы любых методов этого сканера, кроме close() и ioException(), могут возвращать неопределенные результаты или могут вызывать неопределенные эффекты на возвращаемом потоке. Источник Spliterator возвращаемого потока является немедленным и постарается выбросить ConcurrentModificationException, если любые такие вызовы будут обнаружены во время выполнения потоковой обработки.

После завершения выполнения потоковой обработки, этот сканер находится в неопределенном состоянии и не может быть повторно использован.

Если этот сканер содержит ресурс, который необходимо освободить, этот сканер должен быть закрыт, либо вызвав его метод close(), либо закрыв возвращаемый поток. Закрытие потока закроет лежащий в основе сканер. IllegalStateException будет брошен, если сканер был закрыт, когда был вызван этот метод, или если этот сканер закрыт во время выполнения потоковой обработки.

Этот метод может блокироваться, ожидая большего ввода.

Примечание API:
Например, следующий код создаст список токенов, разделенных запятыми, из строки:
List<String> result = new Scanner("abc,def,,ghi")
     .useDelimiter(",")
     .tokens()
     .collect(Collectors.toList());

Полученный список будет содержать "abc", "def", пустую строку и "ghi".

Возвращает:
последовательный поток строковых токенов
Бросает:
IllegalStateException - если этот сканер закрыт
С:
9

findAll

public Stream<MatchResult> findAll(Pattern pattern)

Возвращает поток результатов сопоставления из этого сканера. Поток содержит те же результаты в том же порядке, что и при вызове findWithinHorizon(pattern, 0) и затем match() последовательно до тех пор, пока findWithinHorizon() находит соответствия.

Полученный поток является последовательным и упорядоченным. Все элементы потока не равны null.

Сканирование начинается при инициировании терминальной операции потока, используя текущее состояние этого сканера. Последующие вызовы любых методов этого сканера, кроме close() и ioException(), могут вернуть неопределенные результаты или вызвать неопределенные эффекты на возвращаемом потоке. Источник возвращаемого потока Spliterator является быстродействующим и, по возможности, выбросит исключение ConcurrentModificationException, если такие вызовы будут обнаружены во время выполнения конвейера потока.

После завершения выполнения конвейера потока этот сканер остается в неопределенном состоянии и не может быть повторно использован.

Если этот сканер содержит ресурс, который необходимо освободить, этот сканер должен быть закрыт, либо вызвав его метод close(), либо закрыв возвращаемый поток. Закрытие потока закроет сканер нижележащего уровня. IllegalStateException выбрасывается, если сканер был закрыт при вызове этого метода или если этот сканер закрывается во время выполнения конвейера потока.

Как и методы findWithinHorizon(), этот метод может заблокироваться, ожидая дополнительного ввода, и может буферизировать неограниченное количество ввода, ища соответствие.

Примечание API:
Например, следующий код прочитает файл и вернёт список всех последовательностей символов, состоящих из семи и более заглавных латинских букв:
try (Scanner sc = new Scanner(Path.of("input.txt"))) {
     Pattern pat = Pattern.compile("[A-Z]{7,}");
     List<String> capWords = sc.findAll(pat)
                               .map(MatchResult::group)
                               .collect(Collectors.toList());
 }
Параметры:
pattern - шаблон для сопоставления
Возвращает:
последовательный поток результатов сопоставления
Исключения:
NullPointerException - если шаблон null
IllegalStateException - если этот сканер закрыт
С:
9

findAll

public Stream<MatchResult> findAll(String patString)

Возвращает поток результатов сопоставления, соответствующих предоставленной строке шаблона. Эффект эквивалентен следующему коду:

scanner.findAll(Pattern.compile(patString))

Параметры:
patString - строка шаблона
Возвращает:
последовательный поток результатов сопоставления
Исключения:
NullPointerException - если patString null
IllegalStateException - если этот сканер закрыт
PatternSyntaxException - если синтаксис регулярного выражения некорректен
С:
9
См. также:
Pattern

© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Scanner.html

Spec-Zone .ru
спецификации, руководства, описания, API