Spec-Zone.ru › OpenJDK 27

Класс Scanner

java.lang.Object
java.util.Scanner
Все реализуемые интерфейсы:
Closeable, AutoCloseable, Iterator<String>
public final class Scanner extends Object implements Iterator<String>, Closeable
Простой текстовый сканер, который может анализировать примитивные типы и строки с помощью регулярных выражений.

Объект Scanner разбивает входные данные на токены с помощью шаблона разделителя, который по умолчанию соответствует пробельным символам. Затем полученные токены можно преобразовать в значения различных типов с помощью различных методов next.

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

    var con = System.console();
    if (con != null) {
        Scanner sc = new Scanner(con.reader());
        int i = sc.nextInt();
    }

Этот код позволяет присваивать значения типов long из записей в файле myNumbers:

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

В этом коде используется Scanner для чтения строк из System.in. Scanner использует значение системного свойства stdin.encoding в качестве Charset. При чтении из System.in важно явно указывать кодировку, поскольку она может отличаться от default charset в зависимости от среды хоста или настроек пользователя:

     Scanner sc = new Scanner(System.in, System.getProperty("stdin.encoding"));
     while (sc.hasNextLine()) {
         String aLine = sc.nextLine();
     }

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

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

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

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

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

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

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

Объект Scanner небезопасно использовать в многопоточной среде без внешней синхронизации.

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

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

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

Экземпляр этого класса способен сканировать числа как в стандартных форматах, так и в форматах локали сканера. Начальная локаль сканера — это значение, возвращаемое методом Locale.getDefault(Locale.Category.FORMAT); её можно изменить с помощью метода useLocale(). Метод 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:
Символ c, не входящий в ASCII, для которого метод Character.isDigit(c) возвращает true
Non0Digit:
[1-Rmax] | NonASCIIDigit
Digit:
[0-Rmax] | NonASCIIDigit
GroupedNumeral:
( Non0Digit Digit? Digit?
( LocalGroupSeparator Digit Digit Digit )+ )
Numeral:
( ( Digit+ ) | GroupedNumeral )
Integer:
( [-+]? ( Numeral ) )
| LocalPositivePrefix Numeral LocalPositiveSuffix
| LocalNegativePrefix Numeral LocalNegativeSuffix
DecimalNumeral:
Numeral
| Numeral LocalDecimalSeparator Digit*
| LocalDecimalSeparator Digit+
Exponent:
( [eE] [+-]? Digit+ )
Decimal:
( [-+]? 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
Float:
Decimal | HexFloat | SignedNonNumber

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

Начиная с версии:
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()
Возвращает последнее исключение 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)
Задаёт для этого сканера указанную систему счисления по умолчанию.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо истечения заданного промежутка реального времени.

Методы, объявленные в интерфейсе Iterator

forEachRemaining
Модификатор и тип Метод Описание
default void forEachRemaining(Consumer<? super String> action)
Выполняет заданное действие для каждого оставшегося элемента, пока не будут обработаны все элементы или действие не вызовет исключение.

Подробное описание конструкторов

Scanner

public Scanner(Readable source)
Создает новый Scanner, который считывает значения из указанного источника.
Параметры:
source — символьный источник, реализующий интерфейс Readable

Scanner

public Scanner(InputStream source)
Создает новый Scanner, который считывает значения из указанного входного потока. Байты из потока преобразуются в символы с использованием кодировки по умолчанию.
Параметры:
source — входной поток для сканирования
См. также:
  • Charset.defaultCharset()

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 — если источник не найден
См. также:
  • Charset.defaultCharset()

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
См. также:
  • Charset.defaultCharset()

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 — канал для сканирования
См. также:
  • Charset.defaultCharset()

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, выброшенное базовым Readable этого Scanner. Этот метод возвращает null, если такого исключения нет.
Возвращает:
последнее исключение, выброшенное источником для чтения этого сканера

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

Возвращает:
результат последней операции сопоставления
Исключения:
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()
Операция удаления не поддерживается этой реализацией 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(). Сканер не продвигается по входным данным.

Если система счисления меньше 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, токен преобразуется в значение float: удаляются все зависящие от локали префиксы, разделители групп и суффиксы, зависящие от локали; затем цифры, не относящиеся к ASCII, преобразуются в цифры ASCII с помощью Character.digit; если присутствовали зависящие от локали отрицательные префиксы и суффиксы, добавляется знак минус (-); полученная строка передаётся в Float.parseFloat. Если токен соответствует локализованным строкам NaN или бесконечности, в Float.parseFloat передаётся соответственно "Nan" или "Infinity".

Возвращает:
значение 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 или бесконечности, в Double.parseDouble передаётся соответственно "Nan" или "Infinity".

Возвращает:
значение 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 работает в режиме fail-fast и при обнаружении подобных вызовов во время выполнения конвейера потока в меру своих возможностей выбросит 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 является fail-fast и при обнаружении таких вызовов во время выполнения конвейера потока, насколько это возможно, выбросит исключение 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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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