Класс 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.
По умолчанию сканер интерпретирует числа как десятичные, если с помощью метода useRadix(int) не задано другое основание системы счисления. Метод reset() сбрасывает основание системы счисления сканера до 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 — наибольшая цифра используемого основания системы счисления (например, в системе счисления с основанием 10 значение 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
Методы, объявленные в интерфейсе Iterator
forEachRemaining
Подробное описание конструкторов
Scanner
public Scanner(Readable source)
Scanner, который возвращает значения, считанные из указанного источника.- Параметры:
-
source— символьный источник, реализующий интерфейсReadable
Scanner
public Scanner(InputStream source)
Scanner, который возвращает значения, считанные из указанного входного потока. Байты из потока преобразуются в символы с использованием кодировки по умолчанию.- Параметры:
-
source— входной поток для сканирования - См. также:
Scanner
public Scanner(InputStream source, String charsetName)
Scanner, который возвращает значения, считанные из указанного входного потока. Байты из потока преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— входной поток для сканирования -
charsetName— тип кодировки, используемой для преобразования байтов потока в символы для сканирования - Исключения:
-
IllegalArgumentException— если указанная кодировка символов не существует
Scanner
public Scanner(InputStream source, Charset charset)
Scanner, который возвращает значения, считанные из указанного входного потока. Байты из потока преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— входной поток для сканирования -
charset— кодировка, используемая для преобразования байтов файла в символы для сканирования - Начиная с версии:
- 10
Scanner
public Scanner(File source) throws FileNotFoundException
Scanner, который возвращает значения, считанные из указанного файла. Байты из файла преобразуются в символы с использованием кодировки по умолчанию.- Параметры:
-
source— файл для сканирования - Исключения:
-
FileNotFoundException— если источник не найден - См. также:
Scanner
public Scanner(File source, String charsetName) throws FileNotFoundException
Scanner, который возвращает значения, считанные из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— файл для сканирования -
charsetName— тип кодировки, используемой для преобразования байтов файла в символы для сканирования - Исключения:
-
FileNotFoundException— если источник не найден -
IllegalArgumentException— если указанная кодировка не найдена
Scanner
public Scanner(File source, Charset charset) throws IOException
Scanner, который возвращает значения, считанные из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— файл для сканирования -
charset— кодировка, используемая для преобразования байтов файла в символы для сканирования - Исключения:
-
IOException— если при открытии источника возникает ошибка ввода-вывода - Начиная с версии:
- 10
Scanner
public Scanner(Path source) throws IOException
Scanner, который возвращает значения, считанные из указанного файла. Байты из файла преобразуются в символы с использованием кодировки по умолчанию.- Параметры:
-
source— путь к файлу для сканирования - Исключения:
-
IOException— если при открытии источника возникает ошибка ввода-вывода - Начиная с версии:
- 1.7
- См. также:
Scanner
public Scanner(Path source, String charsetName) throws IOException
Scanner, который возвращает значения, считанные из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— путь к файлу для сканирования -
charsetName— тип кодировки, используемой для преобразования байтов файла в символы для сканирования - Исключения:
-
IOException— если при открытии источника возникает ошибка ввода-вывода -
IllegalArgumentException— если указанная кодировка не найдена - Начиная с версии:
- 1.7
Scanner
public Scanner(Path source, Charset charset) throws IOException
Scanner, который возвращает значения, считанные из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— путь к файлу для сканирования -
charset— кодировка, используемая для преобразования байтов файла в символы для сканирования - Исключения:
-
IOException— если при открытии источника возникает ошибка ввода-вывода - Начиная с версии:
- 10
Scanner
public Scanner(String source)
Scanner, который возвращает значения, считанные из указанной строки.- Параметры:
-
source— строка для сканирования
Scanner
public Scanner(ReadableByteChannel source)
Scanner, который возвращает значения, считанные из указанного канала. Байты источника преобразуются в символы с использованием кодировки по умолчанию.- Параметры:
-
source— канал для сканирования - См. также:
Scanner
public Scanner(ReadableByteChannel source, String charsetName)
Scanner, который возвращает значения, считанные из указанного канала. Байты источника преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— канал для сканирования -
charsetName— тип кодировки, используемой для преобразования байтов канала в символы для сканирования - Исключения:
-
IllegalArgumentException— если указанная кодировка символов не существует
Scanner
public Scanner(ReadableByteChannel source, Charset charset)
Scanner, который возвращает значения, считанные из указанного канала. Байты источника преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source— канал для сканирования -
charset— тип кодировки, используемой для преобразования байтов канала в символы для сканирования - Начиная с версии:
- 10
Подробное описание методов
close
public void close()
Если этот сканер еще не закрыт, то, если лежащий в его основе источник для чтения также реализует интерфейс Closeable, будет вызван метод close этого источника. Если этот сканер уже закрыт, вызов данного метода не окажет никакого эффекта.
Попытка выполнить операции поиска после закрытия сканера приведет к возникновению исключения IllegalStateException.
- Определен в:
-
closeв интерфейсеAutoCloseable - Определен в:
-
closeв интерфейсеCloseable
ioException
public IOException ioException()
IOException, возникшее в нижележащем 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 является быстро завершающимся при изменении и при обнаружении подобных вызовов во время выполнения конвейера потока, насколько это возможно, выбрасывает 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Scanner.html