Spec-Zone.ru › OpenJDK 24

Класс Scanner

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

A 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();
     }

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

    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() базового объекта readable вызывает исключение IOException, то сканер предполагает, что конец входных данных достигнут. Последнее исключение IOException, сгенерированное базовым объектом readable, может быть получено с помощью метода ioException().

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

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

Если не указано иное, передача null параметра в любой метод Scanner вызовет исключение 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()
Не число
Строка, представляющая не число для чисел с плавающей запятой, т.е., dfs.getNaN()
Бесконечность
Строка, представляющая бесконечность для чисел с плавающей запятой, т.е., dfs.getInfinity()

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

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

Не-ASCII-цифра:
Символ c, не являющийся символом ASCII, для которого Character.isDigit(c) возвращает true
Не-нулевая цифра:
[1-Rmax] | Не-ASCII-цифра
Цифра:
[0-Rmax] | Не-ASCII-цифра
Сгруппированное число:
( Не-нулевая цифра Цифра? Цифра?
( Разделитель групп Цифра Цифра Цифра )+ )
Число:
( ( Цифра+ ) | Сгруппированное число )
Целое число:
( [-+]? ( Число ) )
| Префикс положительного числа Число Суффикс положительного числа
| Префикс отрицательного числа Число Суффикс отрицательного числа
Десятичное число:
Число
| Число Разделитель десятичных знаков Цифра*
| Разделитель десятичных знаков Цифра+
Порядок:
( [eE] [+-]? Цифра+ )
Десятичное число:
( [-+]? Десятичное число Порядок? )
| Префикс положительного числа Десятичное число Суффикс положительного числа Порядок?
| Префикс отрицательного числа Десятичное число Суффикс отрицательного числа Порядок?
Шестнадцатеричное число с плавающей точкой:
[-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+ ([pP][-+]?[0-9]+)?
Не число:
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, если следующий токен в входных данных этого сканера может быть интерпретирован как значение boolean с помощью нечувствительного к регистру шаблона, созданного из строки "true|false".
boolean hasNextByte()
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение byte в стандартном формате с помощью метода nextByte().
boolean hasNextByte(int radix)
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение byte в указанном формате с помощью метода nextByte().
boolean hasNextDouble()
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение double с помощью метода nextDouble().
boolean hasNextFloat()
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение float с помощью метода nextFloat().
boolean hasNextInt()
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение int в стандартном формате с помощью метода nextInt().
boolean hasNextInt(int radix)
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение int в указанном формате с помощью метода nextInt().
boolean hasNextLine()
Возвращает true, если в вводе этого сканера есть другая строка.
boolean hasNextLong()
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение long в стандартном формате с помощью метода nextLong().
boolean hasNextLong(int radix)
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение long в указанном формате с помощью метода nextLong().
boolean hasNextShort()
Возвращает 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()
Сканирует следующий токен ввода в виде значения boolean и возвращает это значение.
byte nextByte()
Сканирует следующий токен ввода как byte.
byte nextByte(int radix)
Сканирует следующий токен ввода как byte.
double nextDouble()
Сканирует следующий токен ввода как double.
float nextFloat()
Сканирует следующий токен ввода как float.
int nextInt()
Сканирует следующий токен ввода как int.
int nextInt(int radix)
Сканирует следующий токен ввода как int.
String nextLine()
Перемещает этот сканер за текущую строку и возвращает пропущенный ввод.
long nextLong()
Сканирует следующий токен ввода как long.
long nextLong(int radix)
Сканирует следующий токен ввода как long.
short nextShort()
Сканирует следующий токен ввода как short.
short nextShort(int radix)
Сканирует следующий токен ввода как short.
int radix()
Возвращает стандартный radix этого сканера.
void remove()
Операция 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 - Поток ввода для сканирования
См. также:
  • 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, брошенную этим Scanner's базой Readable. Этот метод возвращает null, если такой исключения нет.
Возвращает:
последнее исключение, брошенное базой сканера

delimiter

public Pattern delimiter()
Возвращает Pattern, которое этот Scanner в настоящее время использует для сопоставления разделителей.
Возвращает:
шаблон разделителя сканера.

useDelimiter

public Scanner useDelimiter(Pattern pattern)
Устанавливает разделитель сканера на указанный шаблон.
Parameters:
pattern - Шаблон разделителя
Returns:
этот сканер

useDelimiter

public Scanner useDelimiter(String pattern)
Устанавливает разделитель сканера на шаблон, построенный из указанного String.

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

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

Parameters:
pattern - Строка, определяющая шаблон разделителя
Returns:
этот сканер

locale

public Locale locale()
Возвращает локаль этого сканера.

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

Returns:
локаль этого сканера

useLocale

public Scanner useLocale(Locale locale)
Устанавливает локаль этого сканера на указанную локаль.

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

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

Parameters:
locale - Строка, определяющая используемую локаль
Returns:
этот сканер

radix

public int radix()
Возвращает стандартную базу этого сканера.

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

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

useRadix

public Scanner useRadix(int radix)
Устанавливает стандартную базу этого сканера на указанную базу.

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

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

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

Parameters:
radix - База, используемая при сканировании чисел
Returns:
этот сканер
Throws:
IllegalArgumentException - если база находится вне допустимого диапазона

match

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

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

Returns:
результат соответствия последней операции соответствия
Throws:
IllegalStateException - Если результат соответствия недоступен

toString

public String toString()

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

Overrides:
toString в классе Object
Returns:
Строковое представление этого сканера

hasNext

public boolean hasNext()
Возвращает true, если у этого сканера есть следующий токен в его входных данных. Этот метод может блокироваться при ожидании ввода для сканирования. Сканер не переходит к любому вводу.
Specified by:
hasNext в интерфейсе Iterator<String>
Returns:
true, если и только если у этого сканера есть следующий токен
Throws:
IllegalStateException - если этот сканер закрыт
See Also:
  • Iterator

next

public String next()
Ищет и возвращает следующий полный токен из этого сканера. Полный токен предшествует и следует за вводом, который соответствует шаблону разделителя. Этот метод может блокироваться при ожидании ввода для сканирования, даже если предыдущий вызов hasNext() вернул true.
Specified by:
next в интерфейсе Iterator<String>
Returns:
следующий токен
Throws:
NoSuchElementException - если больше токенов недоступно
IllegalStateException - если этот сканер закрыт
See Also:
  • Iterator

remove

public void remove()
Операция remove не поддерживается этой реализацией Iterator.
Specified by:
remove в интерфейсе Iterator<String>
Throws:
UnsupportedOperationException - если этот метод вызывается.
See Also:
  • Iterator

hasNext

public boolean hasNext(String pattern)
Возвращает true, если следующий токен соответствует шаблону, построенному из указанной строки. Сканер не переходит к любому вводу.

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

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

next

public String next(String pattern)
Возвращает следующий токен, если он соответствует шаблону, построенному из указанной строки. Если соответствие успешно, сканер переходит к вводу, который соответствовал шаблону.

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

Parameters:
pattern - строка, определяющая шаблон для сканирования
Returns:
следующий токен
Throws:
NoSuchElementException - если таких токенов больше нет
IllegalStateException - если этот сканер закрыт

hasNext

public boolean hasNext(Pattern pattern)
Возвращает true, если следующий полный токен соответствует указанному шаблону. Полный токен предшествует и постфиксен вводом, соответствующим шаблону разделителя. Этот метод может блокироваться при ожидании ввода. Сканер не переходит к любому вводу.
Parameters:
pattern - шаблон для поиска
Returns:
true, если и только если у этого сканера есть ещё один токен, соответствующий указанному шаблону
Throws:
IllegalStateException - если этот сканер закрыт

next

public String next(Pattern pattern)
Возвращает следующий токен, если он соответствует указанному шаблону. Этот метод может блокироваться при ожидании ввода для сканирования, даже если предыдущий вызов hasNext(Pattern) вернул true. Если соответствие успешно, сканер переходит к вводу, который соответствовал шаблону.
Parameters:
pattern - шаблон для поиска
Returns:
следующий токен
Throws:
NoSuchElementException - если больше токенов недоступно
IllegalStateException - если этот сканер закрыт

hasNextLine

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

hasNextByte

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

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

Параметры:
radix - основание, используемое для интерпретации токена как байтового значения
Возвращает:
true тогда и только тогда, когда следующий токен этого сканера является допустимым байтовым значением
Выбрасывает:
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, как если бы были удалены все локально-зависимые префиксы, разделители групп и локально-зависимые суффиксы, а затем не-ASCII цифры были заменены на ASCII цифры с помощью Character.digit, добавлен знак минус (-) если присутствовали локально-зависимые префиксы и суффиксы, а затем полученная строка передана в Byte.parseByte со значением заданного основания.

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

Параметры:
radix - основание, используемое для интерпретации токена как значения байта
Возвращает:
сканированное byte из входных данных
Исключения:
InputMismatchException - если следующий токен не соответствует регулярному выражению Целое или находится вне допустимого диапазона
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 - если следующий токен не соответствует регулярному выражению Целое или находится вне допустимого диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

nextShort

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

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

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

Параметры:
radix - основание, используемое для интерпретации токена как значения short
Возвращает:
сканированное short из входных данных
Исключения:
InputMismatchException - если следующий токен не соответствует регулярному выражению Целое или находится вне допустимого диапазона
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 - если следующий токен не соответствует регулярному выражению Целое или находится вне допустимого диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

nextInt

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

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

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

Параметры:
radix - основание, используемое для интерпретации токена как значения int
Возвращает:
сканированное int из входных данных
Исключения:
InputMismatchException - если следующий токен не соответствует регулярному выражению Целое или находится вне допустимого диапазона
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.

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

nextLong

public long nextLong()
Сканирует следующий токен входных данных как значение типа long.

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

Returns:
сканированное из входных данных значение типа long
Throws:
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.

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

hasNextFloat

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

nextFloat

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

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

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

hasNextDouble

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

nextDouble

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

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

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

hasNextBigInteger

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

hasNextBigInteger

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

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

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

nextBigInteger

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

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

Returns:
сканированное из входных данных значение типа BigInteger
Throws:
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, 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/Scanner.html

Spec-Zone.ru

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