Класс 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 |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного файла. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного файла. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного файла. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного входного потока. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного входного потока. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного входного потока. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного источника. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанной строки. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного канала. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного канала. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного канала. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного файла. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного файла. |
Scanner |
Создаёт новый объект Scanner, который предоставляет значения, считанные из указанного файла. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает этот сканер. |
Pattern |
delimiter() |
Возвращает Pattern, который этот Scanner в данный момент использует для сопоставления разделителей. |
Stream |
findAll |
Возвращает поток результатов сопоставления, соответствующих заданной строке шаблона. |
Stream |
findAll |
Возвращает поток результатов сопоставления из этого сканера. |
String |
findInLine |
Пытается найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители. |
String |
findInLine |
Пытается найти следующее вхождение указанного шаблона, игнорируя разделители. |
String |
findWithinHorizon |
Пытается найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители. |
String |
findWithinHorizon |
Пытается найти следующее вхождение указанного шаблона. |
boolean |
hasNext() |
Возвращает true, если во входных данных этого сканера есть ещё один токен. |
boolean |
hasNext |
Возвращает true, если следующий токен соответствует шаблону, созданному из указанной строки. |
boolean |
hasNext |
Возвращает true, если следующий полный токен соответствует указанному шаблону. |
boolean |
hasNextBigDecimal() |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как BigDecimal с помощью метода nextBigDecimal(). |
boolean |
hasNextBigInteger() |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как BigInteger в системе счисления по умолчанию с помощью метода nextBigInteger(). |
boolean |
hasNextBigInteger |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как BigInteger в указанной системе счисления с помощью метода nextBigInteger(). |
boolean |
hasNextBoolean() |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как логическое значение с помощью шаблона без учёта регистра, созданного из строки "true|false". |
boolean |
hasNextByte() |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа byte в системе счисления по умолчанию с помощью метода nextByte(). |
boolean |
hasNextByte |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа byte в указанной системе счисления с помощью метода nextByte(). |
boolean |
hasNextDouble() |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа double с помощью метода nextDouble(). |
boolean |
hasNextFloat() |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа float с помощью метода nextFloat(). |
boolean |
hasNextInt() |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа int в системе счисления по умолчанию с помощью метода nextInt(). |
boolean |
hasNextInt |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа int в указанной системе счисления с помощью метода nextInt(). |
boolean |
hasNextLine() |
Возвращает true, если во входных данных этого сканера есть ещё одна строка. |
boolean |
hasNextLong() |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа long в системе счисления по умолчанию с помощью метода nextLong(). |
boolean |
hasNextLong |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа long в указанной системе счисления с помощью метода nextLong(). |
boolean |
hasNextShort() |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа short в системе счисления по умолчанию с помощью метода nextShort(). |
boolean |
hasNextShort |
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа short в указанной системе счисления с помощью метода nextShort(). |
IOException |
ioException() |
Возвращает последнее исключение IOException, сгенерированное базовым объектом Readable этого Scanner. |
Locale |
locale() |
Возвращает локаль этого сканера. |
MatchResult |
match() |
Возвращает результат сопоставления последней операции сканирования, выполненной этим сканером. |
String |
next() |
Находит и возвращает следующий полный токен из этого сканера. |
String |
next |
Возвращает следующий токен, если он соответствует шаблону, созданному из указанной строки. |
String |
next |
Возвращает следующий токен, если он соответствует указанному шаблону. |
BigDecimal |
nextBigDecimal() |
Считывает следующий токен входных данных как BigDecimal. |
BigInteger |
nextBigInteger() |
Считывает следующий токен входных данных как BigInteger. |
BigInteger |
nextBigInteger |
Считывает следующий токен входных данных как BigInteger. |
boolean |
nextBoolean() |
Считывает следующий токен входных данных как логическое значение и возвращает это значение. |
byte |
nextByte() |
Считывает следующий токен входных данных как byte. |
byte |
nextByte |
Считывает следующий токен входных данных как byte. |
double |
nextDouble() |
Считывает следующий токен входных данных как double. |
float |
nextFloat() |
Считывает следующий токен входных данных как float. |
int |
nextInt() |
Считывает следующий токен входных данных как int. |
int |
nextInt |
Считывает следующий токен входных данных как int. |
String |
nextLine() |
Перемещает этот сканер за пределы текущей строки и возвращает пропущенные входные данные. |
long |
nextLong() |
Считывает следующий токен входных данных как long. |
long |
nextLong |
Считывает следующий токен входных данных как long. |
short |
nextShort() |
Считывает следующий токен входных данных как short. |
short |
nextShort |
Считывает следующий токен входных данных как short. |
int |
radix() |
Возвращает систему счисления по умолчанию этого сканера. |
void |
remove() |
Операция удаления не поддерживается этой реализацией Iterator. |
Scanner |
reset() |
Сбрасывает состояние этого сканера. |
Scanner |
skip |
Пропускает входные данные, соответствующие шаблону, созданному из указанной строки. |
Scanner |
skip |
Пропускает входные данные, соответствующие указанному шаблону, игнорируя разделители. |
Stream |
tokens() |
Возвращает поток токенов из этого сканера, разделённых разделителями. |
String |
toString() |
Возвращает строковое представление этого Scanner. |
Scanner |
useDelimiter |
Задаёт шаблон разделителя этого сканера, используя шаблон, созданный из указанного String. |
Scanner |
useDelimiter |
Задаёт шаблон разделителя этого сканера. |
Scanner |
useLocale |
Задаёт для этого сканера указанную локаль. |
Scanner |
useRadix |
Задаёт для этого сканера указанную систему счисления по умолчанию. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе Iterator
forEachRemaining | Модификатор и тип | Метод | Описание |
|---|---|---|
default void |
forEachRemaining |
Выполняет заданное действие для каждого оставшегося элемента, пока не будут обработаны все элементы или действие не вызовет исключение. |
Подробное описание конструкторов
Scanner
public Scanner(Readable source)
Scanner, который считывает значения из указанного источника.- Параметры:
-
source— символьный источник, реализующий интерфейсReadable
Scanner
public Scanner(InputStream source)
Scanner, который считывает значения из указанного входного потока. Байты из потока преобразуются в символы с использованием кодировки по умолчанию.- Параметры:
-
source— входной поток для сканирования - См. также:
Scanner
public Scanner(InputStream source, String charsetName)
Scanner, который считывает значения из указанного входного потока. Байты из потока преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— входной поток для сканирования -
charsetName— тип кодировки, используемый для преобразования байтов из потока в символы для сканирования - Исключения:
-
IllegalArgumentException— если указанная кодировка не существует
Scanner
public Scanner(InputStream source, Charset charset)
Scanner, который считывает значения из указанного входного потока. Байты из потока преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— входной поток для сканирования -
charset— кодировка, используемая для преобразования байтов из файла в символы для сканирования - Начиная с:
- 10
Scanner
public Scanner(File source) throws FileNotFoundException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием кодировки по умолчанию.- Параметры:
-
source— файл для сканирования - Исключения:
-
FileNotFoundException— если источник не найден - См. также:
Scanner
public Scanner(File source, String charsetName) throws FileNotFoundException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— файл для сканирования -
charsetName— тип кодировки, используемый для преобразования байтов из файла в символы для сканирования - Исключения:
-
FileNotFoundException— если источник не найден -
IllegalArgumentException— если указанная кодировка не найдена
Scanner
public Scanner(File source, Charset charset) throws IOException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— файл для сканирования -
charset— кодировка, используемая для преобразования байтов из файла в символы для сканирования - Исключения:
-
IOException— если при открытии источника возникает ошибка ввода-вывода - Начиная с:
- 10
Scanner
public Scanner(Path source) throws IOException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием кодировки по умолчанию.- Параметры:
-
source— путь к файлу для сканирования - Исключения:
-
IOException— если при открытии источника возникает ошибка ввода-вывода - Начиная с:
- 1.7
- См. также:
Scanner
public Scanner(Path source, String charsetName) throws IOException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— путь к файлу для сканирования -
charsetName— тип кодировки, используемый для преобразования байтов из файла в символы для сканирования - Исключения:
-
IOException— если при открытии источника возникает ошибка ввода-вывода -
IllegalArgumentException— если указанная кодировка не найдена - Начиная с:
- 1.7
Scanner
public Scanner(Path source, Charset charset) throws IOException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— путь к файлу для сканирования -
charset— кодировка, используемая для преобразования байтов из файла в символы для сканирования - Исключения:
-
IOException— если при открытии источника возникает ошибка ввода-вывода - Начиная с:
- 10
Scanner
public Scanner(String source)
Scanner, который считывает значения из указанной строки.- Параметры:
-
source— строка для сканирования
Scanner
public Scanner(ReadableByteChannel source)
Scanner, который считывает значения из указанного канала. Байты из источника преобразуются в символы с использованием кодировки по умолчанию.- Параметры:
-
source— канал для сканирования - См. также:
Scanner
public Scanner(ReadableByteChannel source, String charsetName)
Scanner, который считывает значения из указанного канала. Байты из источника преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— канал для сканирования -
charsetName— тип кодировки, используемый для преобразования байтов из канала в символы для сканирования - Исключения:
-
IllegalArgumentException— если указанная кодировка не существует
Scanner
public Scanner(ReadableByteChannel source, Charset charset)
Scanner, который считывает значения из указанного канала. Байты из источника преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— канал для сканирования -
charset— кодировка, используемая для преобразования байтов из канала в символы для сканирования - Начиная с:
- 10
Подробное описание методов
close
public void close()
Если этот сканер еще не закрыт, то, если его базовый источник для чтения также реализует интерфейс Closeable, будет вызван метод close этого источника. Если сканер уже закрыт, вызов этого метода не возымеет эффекта.
Попытка выполнить операции поиска после закрытия сканера приведет к возникновению IllegalStateException.
- Определен в:
-
closeв интерфейсеAutoCloseable - Определен в:
-
closeв интерфейсеCloseable
ioException
public IOException ioException()
IOException, выброшенное базовым 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
hasNext
public boolean hasNext()
- Определен в:
-
hasNextв интерфейсеIterator<String> - Возвращает:
- true тогда и только тогда, когда у этого сканера есть следующий токен
- Исключения:
-
IllegalStateException— если этот сканер закрыт - См. также:
next
public String next()
hasNext() вернул true.- Определен в:
-
nextв интерфейсеIterator<String> - Возвращает:
- следующий токен
- Исключения:
-
NoSuchElementException— если больше нет доступных токенов -
IllegalStateException— если этот сканер закрыт - См. также:
remove
public void remove()
Iterator.- Определен в:
-
removeв интерфейсеIterator<String> - Исключения:
-
UnsupportedOperationException— если вызван этот метод. - См. также:
hasNext
public boolean hasNext(String pattern)
Вызов этого метода в форме 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)
- Параметры:
-
pattern— шаблон для поиска - Возвращает:
- true тогда и только тогда, когда у этого сканера есть другой токен, соответствующий указанному шаблону
- Исключения:
-
IllegalStateException— если этот сканер закрыт
next
public String next(Pattern pattern)
hasNext(Pattern) вернул true. При успешном сопоставлении сканер перемещается вперед, пропуская входные данные, соответствующие шаблону.- Параметры:
-
pattern— шаблон для поиска - Возвращает:
- следующий токен
- Исключения:
-
NoSuchElementException— если больше нет доступных токенов -
IllegalStateException— если этот сканер закрыт
hasNextLine
public boolean hasNextLine()
- Возвращает:
- 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 тогда и только тогда, когда следующий токен этого сканера является допустимым логическим значением
- Исключения:
-
IllegalStateException— если этот сканер закрыт
nextBoolean
public boolean nextBoolean()
InputMismatchException, если следующий токен нельзя преобразовать в допустимое логическое значение. При успешном сопоставлении сканер перемещается вперед, пропуская соответствующие входные данные.- Возвращает:
- логическое значение, считанное из входных данных
- Исключения:
-
InputMismatchException— если следующий токен не является допустимым логическим значением -
NoSuchElementException— если входные данные исчерпаны -
IllegalStateException— если этот сканер закрыт
hasNextByte
public boolean hasNextByte()
nextByte(). Сканер не продвигается по входным данным.- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением byte
- Вызывает исключение:
-
IllegalStateException— если этот сканер закрыт
hasNextByte
public boolean hasNextByte(int radix)
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()
nextShort(). Сканер не продвигается по входным данным.- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением short в системе счисления по умолчанию
- Вызывает исключение:
-
IllegalStateException— если этот сканер закрыт
hasNextShort
public boolean hasNextShort(int radix)
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()
nextInt(). Сканер не продвигается по входным данным.- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением int
- Вызывает исключение:
-
IllegalStateException— если этот сканер закрыт
hasNextInt
public boolean hasNextInt(int radix)
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()
nextLong(). Сканер не продвигается по входным данным.- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением long
- Вызывает исключение:
-
IllegalStateException— если этот сканер закрыт
hasNextLong
public boolean hasNextLong(int radix)
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()
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()
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()
BigInteger в системе счисления по умолчанию с помощью метода nextBigInteger(). Сканер не продвигается по входным данным.- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым
BigInteger - Вызывает исключение:
-
IllegalStateException— если этот сканер закрыт
hasNextBigInteger
public boolean hasNextBigInteger(int radix)
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()
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
- См. также:
© 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.