Класс Scanner
- java.lang.Object
-
- java.util.Scanner
- Все реализованные интерфейсы:
-
Closeable,AutoCloseable,Iterator<String>
public final class Scanner extends Object implements Iterator<String>, Closeable
Простой текстовый сканер, который может анализировать примитивные типы и строки с использованием регулярных выражений.
Сканер разбивает свой ввод на токены, используя шаблон разделителя, который по умолчанию соответствует пробелам. Полученные токены затем могут быть преобразованы в значения разных типов с помощью различных методов.
Например, этот код позволяет пользователю читать число из потока:
Scanner sc = new Scanner(System.in); int i = sc.nextInt();
В качестве другого примера, этот код позволяет назначать значения разных типов из записей в файле:
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
} Сканер также может использовать разделители, отличные от пробелов. Этот пример считывает несколько элементов из строки:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close(); выводит следующий вывод:
1 2 red blue
Тот же вывод можно получить с помощью этого кода, который использует регулярное выражение для анализа всех четырех токенов сразу:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close(); Разделитель по умолчанию (пробелы) используемый сканером, определяется с помощью метода Character.isWhitespace(). Метод reset() сбросит значение разделителя сканера на значение по умолчанию (пробелы) независимо от того, было ли оно ранее изменено.
Операция сканирования может блокироваться, ожидая ввода.
Методы next() и hasNext(), а также связанные методы (например, nextInt() и hasNextInt()) сначала пропускают любой ввод, соответствующий шаблону разделителя, а затем пытаются вернуть следующий токен. Оба метода могут блокироваться, ожидая дополнительного ввода. Блокирование метода сканирования не связано с блокированием сопутствующего метода проверки наличия следующего токена. Метод tokens() также может блокироваться, ожидая ввода.
Методы findInLine(), findWithinHorizon(), skip() и findAll() работают независимо от шаблона разделителя. Эти методы попытаются сопоставить указанный шаблон без учета разделителей во вводе и, таким образом, могут быть использованы в особых случаях, когда разделители не имеют значения. Эти методы могут блокироваться, ожидая большего ввода.
Когда сканер выбрасывает исключение InputMismatchException, сканер не пройдет токен, вызвавший исключение, чтобы его можно было получить или пропустить с помощью другого метода.
В зависимости от типа разделительного шаблона могут возвращаться пустые токены. Например, шаблон "\\s+" не вернёт пустых токенов, так как он соответствует нескольким вхождениям разделителя. Шаблон разделителя "\\s" может возвращать пустые токены, так как он пропускает только один пробел за раз.
Сканер может считывать текст из любого объекта, реализующего интерфейс Readable. Если вызов метода read() базового объекта-читателя вызывает исключение IOException, сканер предполагает, что конец ввода достигнут. Последнее исключение, сгенерированное базовым объектом-читателем, можно получить с помощью метода ioException().
При закрытии сканера, он закроет источник ввода, если источник реализует интерфейс Closeable.
Сканер не является потокобезопасным без внешней синхронизации.
Если не указано иное, передача параметра null в любой метод сканера вызовет исключение NullPointerException.
Сканер по умолчанию интерпретирует числа как десятичные, пока не будет задано другое основание с помощью метода useRadix(int). Метод reset() сбросит значение основания сканера до 10 независимо от того, было ли оно ранее изменено.
Локализованные числа
Экземпляр этого класса может сканировать числа в стандартных форматах, а также в форматах локали сканера. Начальная локали сканера — значение, возвращаемое методом Locale.getDefault(Locale.Category.FORMAT); она может быть изменена с помощью метода useLocale(). Метод reset() сбросит значение локали сканера до начальной локали независимо от того, было ли оно ранее изменено.
Локализованные форматы определяются с помощью следующих параметров, которые для определенной локали берутся из объекта DecimalFormat этой локали, df, и его объекта DecimalFormatSymbols, dfs.
- Разделитель групп
- Символ, используемый для разделения групп тысяч, т.е.,
dfs.getGroupingSeparator() - Десятичный разделитель
- Символ, используемый для десятичной точки, т.е.,
dfs.getDecimalSeparator() - Положительный префикс
- Строка, появляющаяся перед положительным числом (может быть пустой), т.е.,
df.getPositivePrefix() - Положительный суффикс
- Строка, появляющаяся после положительного числа (может быть пустой), т.е.,
df.getPositiveSuffix() - Отрицательный префикс
- Строка, появляющаяся перед отрицательным числом (может быть пустой), т.е.,
df.getNegativePrefix() - Отрицательный суффикс
- Строка, появляющаяся после отрицательного числа (может быть пустой), т.е.,
df.getNegativeSuffix() - NaN
- Строка, представляющая не число для значений с плавающей точкой, т.е.,
dfs.getNaN() - Бесконечность
- Строка, представляющая бесконечность для значений с плавающей точкой, т.е.,
dfs.getInfinity()
Синтаксис чисел
Строки, которые могут быть распарсены как числа экземпляром этого класса, определяются в терминах следующей грамматики регулярных выражений, где Rmax — это наибольшая цифра в используемом основании (например, Rmax — 9 в основании 10).
- НеASCII-цифра:
- Не-ASCII символ c, для которого
Character.isDigit(c)возвращает true - Не0-цифра:
-
[1-Rmax] |НеASCII-цифра - Цифра:
-
[0-Rmax] |НеASCII-цифра - Группа чисел:
-
(Не0-цифра Цифра?Цифра?(Разделитель групп Цифра Цифра Цифра)+ ) - Число:
-
( (Цифра+ ) |Группа чисел) - Целое число:
-
( [-+]? (Число) )|Положительный префикс Число Положительный суффикс|Отрицательный префикс Число Отрицательный суффикс - Десятичное число:
-
Число
|Число Десятичный разделитель Цифра*|Десятичный разделитель Цифра+ - Показатель степени:
-
( [eE] [+-]?Цифра+ ) - Десятичное число:
-
( [-+]?Десятичное число Показатель степени? )|Положительный префикс Десятичное число Положительный суффикс Показатель степени?|Отрицательный префикс Десятичное число Отрицательный суффикс Показатель степени? - Шестнадцатеричное число с плавающей точкой:
-
[-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+ ([pP][-+]?[0-9]+)? - Не число:
-
NaN |NaN| Infinity |Бесконечность - Отрицательное не число:
-
( [-+]?Не число)|Положительный префикс Не число Положительный суффикс|Отрицательный префикс Не число Отрицательный суффикс - Число с плавающей точкой:
-
Десятичное число
|Шестнадцатеричное число с плавающей точкой|Отрицательное не число
Пробелы не имеют значения в вышеприведенных регулярных выражениях.
- С:
- 1.5
Конструкторы
| Конструктор | Описание |
|---|---|
Scanner(File source) | Создаёт новый |
Scanner(File source,
String charsetName) | Создаёт новый |
Scanner(File source,
Charset charset) | Создаёт новый |
Scanner(InputStream source) | Создаёт новый |
Scanner(InputStream source,
String charsetName) | Создаёт новый |
Scanner(InputStream source,
Charset charset) | Создаёт новый |
Scanner(Readable source) | Создаёт новый |
Scanner(String source) | Создаёт новый |
Scanner(ReadableByteChannel source) | Создаёт новый |
Scanner(ReadableByteChannel source,
String charsetName) | Создаёт новый |
Scanner(ReadableByteChannel source,
Charset charset) | Создаёт новый |
Scanner(Path source) | Создаёт новый |
Scanner(Path source,
String charsetName) | Создаёт новый |
Scanner(Path source,
Charset charset) | Создаёт новый |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | close() | Закрывает этот сканер. |
Pattern | delimiter() | Возвращает |
Stream<MatchResult> | findAll(String patString) | Возвращает поток результатов сопоставления, которые соответствуют указанной строке шаблона. |
Stream<MatchResult> | findAll(Pattern pattern) | Возвращает поток результатов сопоставления из этого сканера. |
String | findInLine(String pattern) | Попытка найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители. |
String | findInLine(Pattern pattern) | Попытка найти следующее вхождение указанного шаблона, игнорируя разделители. |
String | findWithinHorizon(String pattern,
int horizon) | Попытка найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители. |
String | findWithinHorizon(Pattern pattern,
int horizon) | Попытка найти следующее вхождение указанного шаблона. |
boolean | hasNext() | Возвращает true, если в этом сканере есть другой токен в его вводе. |
boolean | hasNext(String pattern) | Возвращает true, если следующий токен соответствует шаблону, созданному из указанной строки. |
boolean | hasNext(Pattern pattern) | Возвращает true, если следующий завершенный токен соответствует указанному шаблону. |
boolean | hasNextBigDecimal() | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как |
boolean | hasNextBigInteger() | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как |
boolean | hasNextBigInteger(int radix) | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как |
boolean | hasNextBoolean() | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как булевое значение с использованием нечувствительного к регистру шаблона, созданного из строки "true|false". |
boolean | hasNextByte() | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение типа byte в базовом формате по умолчанию с использованием метода |
boolean | hasNextByte(int radix) | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение типа byte в указанном формате с использованием метода |
boolean | hasNextDouble() | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение типа double с использованием метода |
boolean | hasNextFloat() | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение типа float с использованием метода |
boolean | hasNextInt() | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение типа int в базовом формате по умолчанию с использованием метода |
boolean | hasNextInt(int radix) | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение типа int в указанном формате с использованием метода |
boolean | hasNextLine() | Возвращает true, если в вводе этого сканера есть другая строка. |
boolean | hasNextLong() | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение типа long в базовом формате по умолчанию с использованием метода |
boolean | hasNextLong(int radix) | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение типа long в указанном формате с использованием метода |
boolean | hasNextShort() | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение типа short в базовом формате по умолчанию с использованием метода |
boolean | hasNextShort(int radix) | Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение типа short в указанном формате с использованием метода |
IOException | ioException() | Возвращает последнее исключение, сгенерированное базовым |
Locale | locale() | Возвращает локаль сканера. |
MatchResult | match() | Возвращает результат последней операции сканирования, выполненной этим сканером. |
String | next() | Находит и возвращает следующий завершенный токен из этого сканера. |
String | next(String pattern) | Возвращает следующий токен, если он соответствует шаблону, созданному из указанной строки. |
String | next(Pattern pattern) | Возвращает следующий токен, если он соответствует указанному шаблону. |
BigDecimal | nextBigDecimal() | Сканирует следующий токен ввода как |
BigInteger | nextBigInteger() | Сканирует следующий токен ввода как |
BigInteger | nextBigInteger(int radix) | Сканирует следующий токен ввода как |
boolean | nextBoolean() | Сканирует следующий токен ввода в булевое значение и возвращает это значение. |
byte | nextByte() | Сканирует следующий токен ввода как |
byte | nextByte(int radix) | Сканирует следующий токен ввода как |
double | nextDouble() | Сканирует следующий токен ввода как |
float | nextFloat() | Сканирует следующий токен ввода как |
int | nextInt() | Сканирует следующий токен ввода как |
int | nextInt(int radix) | Сканирует следующий токен ввода как |
String | nextLine() | Перемещает этот сканер за текущей строкой и возвращает пропущенный ввод. |
long | nextLong() | Сканирует следующий токен ввода как |
long | nextLong(int radix) | Сканирует следующий токен ввода как |
short | nextShort() | Сканирует следующий токен ввода как |
short | nextShort(int radix) | Сканирует следующий токен ввода как |
int | radix() | Возвращает базовый формат сканера. |
void | remove() | Операция удаления не поддерживается этой реализацией |
Scanner | reset() | Сбрасывает этот сканер. |
Scanner | skip(String pattern) | Пропускает вход, соответствующий шаблону, созданному из указанной строки. |
Scanner | skip(Pattern pattern) | Пропускает вход, соответствующий указанному шаблону, игнорируя разделители. |
Stream<String> | tokens() | Возвращает поток разделителями-разделенных токенов из этого сканера. |
|---|---|---|
String | toString() | Возвращает строковое представление этого |
Scanner | useDelimiter(String pattern) | Устанавливает разделительную модель сканера на модель, созданную из указанного |
Scanner | useDelimiter(Pattern pattern) | Устанавливает разделительную модель сканера на указанную модель. |
Scanner | useLocale(Locale locale) | Устанавливает локаль сканера на указанную локаль. |
Scanner | useRadix(int radix) | Устанавливает по умолчанию основание сканера на указанное основание. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Методы, объявленные в интерфейсе java.util.Iterator
forEachRemaining Конструкторы
Scanner
public Scanner(Readable source)
Создает новый Scanner, который производит значения, сканированные из указанного источника.
- Параметры:
-
source- Источник символов, реализующий интерфейсReadable
Scanner
public Scanner(InputStream source)
Создает новый Scanner, который производит значения, сканированные из указанного потока ввода. Байты из потока преобразуются в символы с использованием базовой кодировки платформы по умолчанию.
- Параметры:
-
source- Поток ввода, подлежащий сканированию
Scanner
public Scanner(InputStream source,
String charsetName) Создает новый Scanner, который производит значения, сканированные из указанного потока ввода. Байты из потока преобразуются в символы с использованием указанной кодировки.
- Параметры:
-
source- Поток ввода, подлежащий сканированию -
charsetName- Тип кодировки, используемый для преобразования байтов из потока в символы, которые будут сканироваться - Исключения:
-
IllegalArgumentException- если указанный набор символов не существует
Scanner
public Scanner(InputStream source,
Charset charset) Создает новый Scanner, который производит значения, сканированные из указанного потока ввода. Байты из потока преобразуются в символы с использованием указанной кодировки.
- Параметры:
-
source- поток ввода для сканирования -
charset- кодировка, используемая для преобразования байтов из файла в символы для сканирования - С тех пор:
- 10
Scanner
public Scanner(File source)
throws FileNotFoundException Создает новый Scanner, который производит значения, сканированные из указанного файла. Байты из файла преобразуются в символы с использованием базовой кодировки платформы по умолчанию.
- Параметры:
-
source- Файл для сканирования - Исключения:
-
FileNotFoundException- если исходник не найден
Scanner
public Scanner(File source,
String charsetName)
throws FileNotFoundException Создает новый Scanner, который производит значения, сканированные из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.
- Параметры:
-
source- Файл для сканирования -
charsetName- Тип кодировки, используемый для преобразования байтов из файла в символы для сканирования - Исключения:
-
FileNotFoundException- если исходник не найден -
IllegalArgumentException- если указанная кодировка не найдена
Scanner
public Scanner(File source,
Charset charset)
throws IOException Создает новый Scanner, который производит значения, сканированные из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.
- Параметры:
-
source- Файл для сканирования -
charset- Кодировка, используемая для преобразования байтов из файла в символы для сканирования - Исключения:
-
IOException- если при открытии источника возникла ошибка ввода-вывода - С тех пор:
- 10
Scanner
public Scanner(Path source)
throws IOException Создает новый Scanner, который производит значения, сканированные из указанного файла. Байты из файла преобразуются в символы с использованием базовой кодировки платформы по умолчанию.
- Параметры:
-
source- путь к файлу для сканирования - Исключения:
-
IOException- если при открытии источника возникла ошибка ввода-вывода - С тех пор:
- 1.7
Scanner
public Scanner(Path source,
String charsetName)
throws IOException Создает новый Scanner, который производит значения, сканированные из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.
- Параметры:
-
source- путь к файлу для сканирования -
charsetName- Тип кодировки, используемый для преобразования байтов из файла в символы для сканирования - Исключения:
-
IOException- если при открытии источника возникла ошибка ввода-вывода -
IllegalArgumentException- если указанная кодировка не найдена - С тех пор:
- 1.7
Scanner
public Scanner(Path source,
Charset charset)
throws IOException Создает новый Scanner, который производит значения, сканированные из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.
- Параметры:
-
source- путь к файлу для сканирования -
charset- кодировка, используемая для преобразования байтов из файла в символы для сканирования - Исключения:
-
IOException- если при открытии источника возникла ошибка ввода-вывода - С тех пор:
- 10
Scanner
public Scanner(String source)
Создает новый Scanner, который производит значения, сканированные из указанной строки.
- Параметры:
-
source- Строка для сканирования
Scanner
public Scanner(ReadableByteChannel source)
Создает новый Scanner, который производит значения, сканированные из указанного канала. Байты из источника преобразуются в символы с использованием базовой кодировки платформы по умолчанию.
- Параметры:
-
source- Канал для сканирования
Scanner
public Scanner(ReadableByteChannel source,
String charsetName) Создает новый Scanner, который производит значения, сканированные из указанного канала. Байты из источника преобразуются в символы с использованием указанной кодировки.
- Параметры:
-
source- Канал для сканирования -
charsetName- Тип кодировки, используемый для преобразования байтов из канала в символы, которые будут сканироваться - Исключения:
-
IllegalArgumentException- если указанный набор символов не существует
Scanner
public Scanner(ReadableByteChannel source,
Charset charset) Создает новый Scanner, который производит значения, сканированные из указанного канала. Байты из источника преобразуются в символы с использованием указанной кодировки.
- Параметры:
-
source- канал для сканирования -
charset- тип кодировки, используемый для преобразования байтов из канала в символы, подлежащие сканированию - С тех пор:
- 10
Методы
close
public void close()
Закрывает этот сканер.
Если этот сканер еще не закрыт, то если его базовый читаемый также реализует интерфейс Closeable, то метод close читаемого будет вызван. Если этот сканер уже закрыт, вызов этого метода не повлияет на него.
Попытка выполнить операции поиска после закрытия сканера приведет к исключению IllegalStateException.
- Указано:
-
closeв интерфейсеAutoCloseable - Указано:
-
closeв интерфейсеCloseable
ioException
public IOException ioException()
Возвращает последнее сгенерированное IOException исключение, сгенерированное базовым Scanner сканера. Если такого исключения нет, возвращает null.
- Возвращает:
- последнее исключение, сгенерированное сканером
delimiter
public Pattern delimiter()
Возвращает Pattern используемый в данный момент этим сканером для сопоставления разделителей.
- Возвращает:
- шаблон разделителя сканера.
useDelimiter
public Scanner useDelimiter(Pattern pattern)
Устанавливает шаблон разделителя сканера на указанный шаблон.
- Параметры:
-
pattern- шаблон разделителя - Возвращает:
- этот сканер
useDelimiter
public Scanner useDelimiter(String pattern)
Устанавливает шаблон разделителя сканера на шаблон, построенный из указанной String.
Вызов этого метода в формате useDelimiter(pattern) ведет себя точно так же, как вызов useDelimiter(Pattern.compile(pattern)).
Вызов метода reset() установит разделитель сканера по умолчанию.
- Параметры:
-
pattern- строка, определяющая шаблон разделителя - Возвращает:
- этот сканер
locale
public Locale locale()
Возвращает локаль этого сканера.
Локаль сканера влияет на многие элементы его шаблонов соответствия по умолчанию; см. локализованные числа выше.
- Возвращает:
- локальность этого сканера
useLocale
public Scanner useLocale(Locale locale)
Устанавливает локаль этого сканера на указанную локаль.
Локаль сканера влияет на многие элементы его шаблонов соответствия по умолчанию; см. локализованные числа выше.
Вызов метода reset() установит локаль сканера на начальную локаль.
- Параметры:
-
locale- строка, определяющая используемую локаль - Возвращает:
- этот сканер
radix
public int radix()
Возвращает основание по умолчанию для этого сканера.
Основание сканера влияет на элементы его шаблонов соответствия чисел по умолчанию; см. локализованные числа выше.
- Возвращает:
- основание по умолчанию этого сканера
useRadix
public Scanner useRadix(int radix)
Устанавливает основание по умолчанию этого сканера на указанное основание.
Основание сканера влияет на элементы его шаблонов соответствия чисел по умолчанию; см. локализованные числа выше.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, будет выброшено IllegalArgumentException.
Вызов метода reset() установит основание сканера на 10.
- Параметры:
-
radix- основание для сканирования чисел - Возвращает:
- этот сканер
- Изначает:
-
IllegalArgumentException- если основание не в пределах допустимого диапазона
match
public MatchResult match()
Возвращает результат последней операции сканирования, выполненной этим сканером. Этот метод выбрасывает IllegalStateException если сопоставление не производилось или последнее сопоставление было неуспешным.
Различные методы next сканера создают результат сопоставления, если они завершаются без выброса исключения. Например, после вызова метода nextInt(), возвращающего int, этот метод возвращает MatchResult для поиска регулярного выражения Integer, определенного выше. Аналогично методы findInLine(), findWithinHorizon() и skip() предоставят результат сопоставления, если они успешно завершатся.
- Возвращает:
- результат сопоставления для последней операции сопоставления
- Изначает:
-
IllegalStateException- если результат сопоставления недоступен
toString
public String toString()
Возвращает строковое представление этого сканера. Строковое представление сканера содержит информацию, которая может быть полезна для отладки. Точный формат не определён.
hasNext
public boolean hasNext()
Возвращает true, если в входных данных этого сканера есть ещё один токен. Этот метод может блокироваться во время ожидания ввода для сканирования. Сканер не пропускает входные данные.
- Указано:
-
hasNextв интерфейсеIterator<String> - Возвращает:
- true, если и только если в сканере есть еще один токен
- Изначает:
-
IllegalStateException- если этот сканер закрыт - См. также:
Iterator
next
public String next()
Находит и возвращает следующий полный токен из этого сканера. Полный токен предшествует и следует за вводом, который соответствует шаблону разделителя. Этот метод может блокироваться во время ожидания ввода для сканирования, даже если предыдущий вызов hasNext() возвращал true.
- Указано:
-
nextв интерфейсеIterator<String> - Возвращает:
- следующий токен
- Изначает:
-
NoSuchElementException- если больше нет токенов -
IllegalStateException- если этот сканер закрыт - См. также:
Iterator
remove
public void remove()
Операция remove не поддерживается этим исполнением Iterator.
- Указано:
-
removeв интерфейсеIterator<String> - Изначает:
-
UnsupportedOperationException- если этот метод вызывается. - См. также:
Iterator
hasNext
public boolean hasNext(String pattern)
Возвращает true, если следующий токен соответствует шаблону, построенному из указанной строки. Сканер не пропускает входные данные.
Вызов этого метода в форме hasNext(pattern) ведет себя точно так же, как вызов hasNext(Pattern.compile(pattern)).
- Параметры:
-
pattern- строка, определяющая шаблон для сканирования - Возвращает:
- true, если и только если в этом сканере есть еще один токен, соответствующий указанному шаблону
- Изначает:
-
IllegalStateException- если этот сканер закрыт
next
public String next(String pattern)
Возвращает следующий токен, если он соответствует шаблону, построенному из указанной строки. Если сопоставление успешно, сканер пропускает входные данные, которые соответствуют шаблону.
Вызов этого метода в форме next(pattern) ведет себя точно так же, как вызов next(Pattern.compile(pattern)).
- Параметры:
-
pattern- строка, определяющая шаблон для сканирования - Возвращает:
- следующий токен
- Изначает:
-
NoSuchElementException- если таких токенов больше нет -
IllegalStateException- если этот сканер закрыт
hasNext
public boolean hasNext(Pattern pattern)
Возвращает true, если следующий полный токен соответствует указанному шаблону. Полный токен предваряется и завершается вводом, который соответствует шаблону разделителя. Этот метод может блокироваться во время ожидания ввода.
- Параметры:
-
pattern- шаблон для поиска - Возвращает:
- true, если и только если в этом сканере есть еще один токен, соответствующий указанному шаблону
- Изначает:
-
IllegalStateException- если этот сканер закрыт
next
public String next(Pattern pattern)
Возвращает следующий токен, если он соответствует указанному шаблону. Этот метод может блокироваться во время ожидания ввода, даже если предыдущий вызов hasNext(Pattern) возвращал true.
- Параметры:
-
pattern- шаблон для поиска - Возвращает:
- следующий токен
- Изначает:
-
NoSuchElementException- если больше нет токенов -
IllegalStateException- если этот сканер закрыт
hasNextLine
public boolean hasNextLine()
Возвращает true, если в вводе этого сканера есть еще одна строка. Этот метод может блокироваться во время ожидания ввода. Сканер не пропускает входные данные.
- Возвращает:
- true, если и только если в сканере есть ещё одна строка ввода
- Изначает:
-
IllegalStateException- если этот сканер закрыт
nextLine
public String nextLine()
Перемещает этот сканер к следующей строке и возвращает пропущенный ввод. Этот метод возвращает остаток текущей строки, за исключением разделителя строк в конце. Позиция устанавливается в начало следующей строки.
Поскольку этот метод продолжает поиск через ввод, ища разделитель строк, он может буферизовать весь ввод, ища строку для пропуска, если разделители строк отсутствуют.
- Возвращает:
- строку, которая была пропущена
- Выбрасывает:
-
NoSuchElementException- если строка не найдена -
IllegalStateException- если этот сканер закрыт
findInLine
public String findInLine(String pattern)
Попытка найти следующее вхождение шаблона, составленного из указанной строки, игнорируя разделители.
Вызов этого метода в форме findInLine(pattern) ведет себя точно так же, как вызов findInLine(Pattern.compile(pattern)).
- Параметры:
-
pattern- строка, определяющая шаблон для поиска - Возвращает:
- текст, соответствующий указанному шаблону
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
findInLine
public String findInLine(Pattern pattern)
Попытка найти следующее вхождение указанного шаблона, игнорируя разделители. Если шаблон найден до следующего разделителя строки, сканер перемещается за вход, который совпал, и возвращает строку, соответствующую шаблону. Если такой шаблон не обнаружен во вводе до следующего разделителя строки, то возвращается null, а положение сканера не изменяется. Этот метод может блокироваться, ожидая ввода, соответствующего шаблону.
Поскольку этот метод продолжает поиск по вводу, ища указанный шаблон, он может буферизовать весь вход, ища нужный токен, если разделителей строк нет.
- Параметры:
-
pattern- шаблон для поиска - Возвращает:
- текст, соответствующий указанному шаблону
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
findWithinHorizon
public String findWithinHorizon(String pattern,
int horizon) Попытка найти следующее вхождение шаблона, составленного из указанной строки, игнорируя разделители.
Вызов этого метода в форме findWithinHorizon(pattern) ведет себя точно так же, как вызов findWithinHorizon(Pattern.compile(pattern), horizon).
- Параметры:
-
pattern- строка, определяющая шаблон для поиска -
horizon- горизонт поиска - Возвращает:
- текст, соответствующий указанному шаблону
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если горизонт отрицательный
findWithinHorizon
public String findWithinHorizon(Pattern pattern,
int horizon) Попытка найти следующее вхождение указанного шаблона.
Этот метод ищет по вводу до указанного горизонта поиска, игнорируя разделители. Если шаблон найден, сканер перемещается за вход, который совпал, и возвращает строку, соответствующую шаблону. Если такой шаблон не найден, то возвращается null, а положение сканера остается неизменным. Этот метод может блокироваться, ожидая ввода, соответствующего шаблону.
Сканер никогда не будет искать больше, чем horizon кодовых точек за пределами своего текущего положения. Обратите внимание, что результат совпадения может быть урезан горизонтом; то есть, произвольный результат совпадения мог быть другим, если горизонт был больше. Сканер обрабатывает горизонт как прозрачную, не-якорную границу (см. Matcher.useTransparentBounds(boolean) и Matcher.useAnchoringBounds(boolean)).
Если горизонт 0, то горизонт игнорируется, и этот метод продолжает поиск по вводу, ища указанный шаблон без ограничений. В этом случае он может буферизовать весь вход, ища шаблон.
Если горизонт отрицательный, выбрасывается исключение IllegalArgumentException.
- Параметры:
-
pattern- шаблон для поиска -
horizon- горизонт поиска - Возвращает:
- текст, соответствующий указанному шаблону
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если горизонт отрицательный
skip
public Scanner skip(Pattern pattern)
Пропускает вход, соответствующий указанному шаблону, игнорируя разделители. Этот метод пропустит вход, если якорное соответствие указанному шаблону успешно.
Если соответствие указанному шаблону не найдено в текущем положении, то вход не пропускается, и выбрасывается NoSuchElementException.
Поскольку этот метод ищет соответствие указанному шаблону, начиная с текущей позиции сканера, шаблоны, которые могут соответствовать большому объёму ввода (например, ".*"), могут заставить сканер буферизовать большой объём ввода.
Обратите внимание, что возможно пропустить что-либо, не рискуя NoSuchElementException с помощью шаблона, который может соответствовать ничему, например, sc.skip("[ \t]*").
- Параметры:
-
pattern- строка, определяющая шаблон для пропуска - Возвращает:
- этот сканер
- Выбрасывает:
-
NoSuchElementException- если указанный шаблон не найден -
IllegalStateException- если этот сканер закрыт
skip
public Scanner skip(String pattern)
Пропускает вход, соответствующий шаблону, составленному из указанной строки.
Вызов этого метода в форме skip(pattern) ведет себя точно так же, как вызов skip(Pattern.compile(pattern)).
- Параметры:
-
pattern- строка, определяющая шаблон для пропуска - Возвращает:
- этот сканер
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
hasNextBoolean
public boolean hasNextBoolean()
Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение boolean с использованием нечувствительного к регистру шаблона, созданного из строки "true|false". Сканер не перемещается дальше ввода, который совпал.
- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением boolean
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
nextBoolean
public boolean nextBoolean()
Сканирует следующий токен ввода в логическое значение и возвращает это значение. Этот метод выбросит InputMismatchException , если следующий токен не может быть преобразован в допустимое логическое значение. Если соответствие успешно, сканер перемещается за вход, который совпал.
- Возвращает:
- считанное из ввода логическое значение
- Выбрасывает:
-
InputMismatchException- если следующий токен не является допустимым булевым значением -
NoSuchElementException- если вход исчерпан -
IllegalStateException- если этот сканер закрыт
hasNextByte
public boolean hasNextByte()
Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение byte в стандартном формате с использованием метода nextByte(). Сканер не перемещается дальше ввода.
- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением byte
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
hasNextByte
public boolean hasNextByte(int radix)
Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение byte в указанном формате с использованием метода nextByte(). Сканер не перемещается дальше ввода.
Если основание меньше Character.MIN_RADIX или больше, чем Character.MAX_RADIX, выбрасывается IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения byte - Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением byte
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание вне допустимого диапазона
nextByte
public byte nextByte()
Сканирует следующий токен ввода как byte.
Вызов этого метода в форме nextByte() ведет себя точно так же, как вызов nextByte(radix), где radix - это стандартное основание этого сканера.
- Возвращает:
- считанное из ввода
byte - Выбрасывает:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer, или находится вне диапазона -
NoSuchElementException- если вход исчерпан -
IllegalStateException- если этот сканер закрыт
nextByte
public byte nextByte(int radix)
Сканирует следующий токен ввода как byte. Этот метод выбросит InputMismatchException , если следующий токен не может быть преобразован в допустимое значение byte, как описано ниже. Если преобразование выполнено успешно, сканер перемещается за вход, который совпал.
Если следующий токен соответствует регулярному выражению Integer, определенному выше, то токен преобразуется в значение byte как если бы все локально-специфические префиксы, разделители групп и локально-специфические суффиксы были удалены, не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, отрицательный знак (-) был добавлен, если присутствовали локально-специфические отрицательные префиксы и суффиксы, и полученная строка была передана в Byte.parseByte со указанным основанием.
Если основание меньше Character.MIN_RADIX или больше, чем Character.MAX_RADIX, выбрасывается IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения byte - Возвращает:
- считанное из ввода
byte - Выбрасывает:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer, или находится вне диапазона -
NoSuchElementException- если вход исчерпан -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание вне допустимого диапазона
hasNextShort
public boolean hasNextShort()
Возвращает true, если следующий токен в вводе этого сканера может быть интерпретирован как значение short в стандартном формате с использованием метода nextShort(). Сканер не перемещается дальше ввода.
- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением short в стандартном формате
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
hasNextShort
public boolean hasNextShort(int radix)
Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа short в указанном основании с помощью метода nextShort(). Сканер не перемещается дальше по вводу.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа short - Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа short в указанном основании
- Исключение:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
nextShort
public short nextShort()
Сканирует следующий токен ввода как short.
Вызов этого метода в форме nextShort() ведет себя точно так же, как вызов nextShort(radix), где radix - это основание по умолчанию этого сканера.
- Возвращает:
- сканированное из ввода значение
short - Исключение:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если ввод исчерпан -
IllegalStateException- если этот сканер закрыт
nextShort
public short nextShort(int radix)
Сканирует следующий токен ввода как short. Этот метод бросит исключение InputMismatchException, если следующий токен не может быть преобразован в допустимое значение типа short, как описано ниже. Если преобразование успешно, сканер перемещается дальше по вводу, который соответствовал.
Если следующий токен соответствует регулярному выражению Integer, определённому выше, то токен преобразуется в значение типа short так, как если бы были удалены все префиксы, разделители групп и суффиксы, специфичные для локали, затем не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, впереди была добавлена отрицательная метка (-) , если были присутствуют префиксы и суффиксы отрицательных значений специфичные для локали, и полученная строка была передана в Short.parseShort с указанным основанием.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа short - Возвращает:
- сканированное из ввода значение
short - Исключение:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если ввод исчерпан -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
hasNextInt
public boolean hasNextInt()
Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как целое число типа int в основании по умолчанию с помощью метода nextInt(). Сканер не перемещается дальше по вводу.
- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым целым числом типа int
- Исключение:
-
IllegalStateException- если этот сканер закрыт
hasNextInt
public boolean hasNextInt(int radix)
Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как целое число типа int в указанном основании с помощью метода nextInt(). Сканер не перемещается дальше по вводу.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа int - Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым целым числом типа int
- Исключение:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
nextInt
public int nextInt()
Сканирует следующий токен ввода как целое число типа int.
Вызов этого метода в форме nextInt() ведет себя точно так же, как вызов nextInt(radix), где radix - это основание по умолчанию этого сканера.
- Возвращает:
- сканированное из ввода целое число
int - Исключение:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если ввод исчерпан -
IllegalStateException- если этот сканер закрыт
nextInt
public int nextInt(int radix)
Сканирует следующий токен ввода как целое число типа int. Этот метод бросит исключение InputMismatchException, если следующий токен не может быть преобразован в допустимое значение типа int, как описано ниже. Если преобразование успешно, сканер перемещается дальше по вводу, который соответствовал.
Если следующий токен соответствует регулярному выражению Integer, определённому выше, то токен преобразуется в значение типа int так, как если бы были удалены все префиксы, разделители групп и суффиксы, специфичные для локали, затем не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, впереди была добавлена отрицательная метка (-) , если были присутствуют префиксы и суффиксы отрицательных значений специфичные для локали, и полученная строка была передана в Integer.parseInt с указанным основанием.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа int - Возвращает:
- сканированное из ввода целое число
int - Исключение:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если ввод исчерпан -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
hasNextLong
public boolean hasNextLong()
Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа long в основании по умолчанию с помощью метода nextLong(). Сканер не перемещается дальше по вводу.
- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа long
- Исключение:
-
IllegalStateException- если этот сканер закрыт
hasNextLong
public boolean hasNextLong(int radix)
Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа long в указанном основании с помощью метода nextLong(). Сканер не перемещается дальше по вводу.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа long - Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа long
- Исключение:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
nextLong
public long nextLong()
Сканирует следующий токен ввода как значение типа long.
Вызов этого метода в форме nextLong() ведет себя точно так же, как вызов nextLong(radix), где radix - это основание по умолчанию этого сканера.
- Возвращает:
- сканированное из ввода значение
long - Исключение:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если ввод исчерпан -
IllegalStateException- если этот сканер закрыт
nextLong
public long nextLong(int radix)
Сканирует следующий токен ввода как значение типа long. Этот метод бросит исключение InputMismatchException, если следующий токен не может быть преобразован в допустимое значение типа long, как описано ниже. Если преобразование успешно, сканер перемещается дальше по вводу, который соответствовал.
Если следующий токен соответствует регулярному выражению Integer, определённому выше, то токен преобразуется в значение типа long так, как если бы были удалены все префиксы, разделители групп и суффиксы, специфичные для локали, затем не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, впереди была добавлена отрицательная метка (-) , если были присутствуют префиксы и суффиксы отрицательных значений специфичные для локали, и полученная строка была передана в Long.parseLong с указанным основанием.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа int - Возвращает:
- сканированное из ввода значение
long - Исключение:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если ввод исчерпан -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
hasNextFloat
public boolean hasNextFloat()
Возвращает true, если следующий токен ввода этого сканера можно интерпретировать как значение типа float с помощью метода nextFloat(). Сканер не перемещается дальше по вводу.
- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа float
- Исключение:
-
IllegalStateException- если этот сканер закрыт
nextFloat
public float nextFloat()
Сканирует следующий токен входных данных как float. Этот метод бросит InputMismatchException если следующий токен нельзя преобразовать в допустимое значение с плавающей запятой, как описано ниже. Если преобразование выполнено успешно, сканер переходит к вводу, который совпал.
Если следующий токен соответствует регулярному выражению Float, определенному выше, то токен преобразуется в значение float так, как если бы все локализованные префиксы, разделители групп и локализованные суффиксы были удалены, затем не-ASCII цифры были преобразованы в ASCII цифры через Character.digit, отрицательный знак (-) был добавлен в начало, если локализованные префиксы и суффиксы отрицательного числа присутствовали, а полученная строка была передана в Float.parseFloat. Если токен соответствует локализованным строкам NaN или бесконечности, то «Nan» или «Infinity» передаются в Float.parseFloat соответственно.
- Возвращает:
- сканированное
floatиз входных данных - Бросает:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Float или находится вне диапазона -
NoSuchElementException- если входные данные исчерпаны -
IllegalStateException- если этот сканер закрыт
hasNextDouble
public boolean hasNextDouble()
Возвращает true, если следующий токен ввода этого сканера может быть интерпретирован как значение типа double с помощью метода nextDouble(). Сканер не переходит к любому вводу.
- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением double
- Бросает:
-
IllegalStateException- если этот сканер закрыт
nextDouble
public double nextDouble()
Сканирует следующий токен входных данных как double. Этот метод бросит InputMismatchException если следующий токен нельзя преобразовать в допустимое значение double. Если преобразование выполнено успешно, сканер переходит к вводу, который совпал.
Если следующий токен соответствует регулярному выражению Float, определенному выше, то токен преобразуется в значение double так, как если бы все локализованные префиксы, разделители групп и локализованные суффиксы были удалены, затем не-ASCII цифры были преобразованы в ASCII цифры через Character.digit, отрицательный знак (-) был добавлен в начало, если локализованные префиксы и суффиксы отрицательного числа присутствовали, а полученная строка была передана в Double.parseDouble. Если токен соответствует локализованным строкам NaN или бесконечности, то «Nan» или «Infinity» передаются в Double.parseDouble соответственно.
- Возвращает:
- сканированное
doubleиз входных данных - Бросает:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Float или находится вне диапазона -
NoSuchElementException- если входные данные исчерпаны -
IllegalStateException- если этот сканер закрыт
hasNextBigInteger
public boolean hasNextBigInteger()
Возвращает true, если следующий токен ввода этого сканера может быть интерпретирован как BigInteger в стандартном формате с использованием метода nextBigInteger(). Сканер не переходит к любому вводу.
- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым
BigInteger - Бросает:
-
IllegalStateException- если этот сканер закрыт
hasNextBigInteger
public boolean hasNextBigInteger(int radix)
Возвращает true, если следующий токен ввода этого сканера может быть интерпретирован как BigInteger в указанном формате с использованием метода nextBigInteger(). Сканер не переходит к любому вводу.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбрасывается IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как целого числа - Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым
BigInteger - Бросает:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне диапазона
nextBigInteger
public BigInteger nextBigInteger()
Сканирует следующий токен входных данных как BigInteger.
Вызов этого метода в форме nextBigInteger() ведет себя точно так же, как вызов nextBigInteger(radix), где radix - это стандартное основание этого сканера.
- Возвращает:
- сканированное
BigIntegerиз входных данных - Бросает:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если входные данные исчерпаны -
IllegalStateException- если этот сканер закрыт
nextBigInteger
public BigInteger nextBigInteger(int radix)
Сканирует следующий токен входных данных как BigInteger.
Если следующий токен соответствует регулярному выражению Integer, определенному выше, то токен преобразуется в значение BigInteger как если бы все разделители групп были удалены, не-ASCII цифры были преобразованы в ASCII цифры через Character.digit, а полученная строка была передана в конструктор BigInteger(String, int) со специфицированным основанием.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбрасывается IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена - Возвращает:
- сканированное
BigIntegerиз входных данных - Бросает:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если входные данные исчерпаны -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне диапазона
hasNextBigDecimal
public boolean hasNextBigDecimal()
Возвращает true, если следующий токен ввода этого сканера может быть интерпретирован как BigDecimal с помощью метода nextBigDecimal(). Сканер не переходит к любому вводу.
- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым
BigDecimal - Бросает:
-
IllegalStateException- если этот сканер закрыт
nextBigDecimal
public BigDecimal nextBigDecimal()
Сканирует следующий токен входных данных как BigDecimal.
Если следующий токен соответствует регулярному выражению Decimal, определенному выше, то токен преобразуется в значение BigDecimal как если бы все разделители групп были удалены, не-ASCII цифры были преобразованы в ASCII цифры через Character.digit, а полученная строка была передана в конструктор BigDecimal(String).
- Возвращает:
- сканированное
BigDecimalиз входных данных - Бросает:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Decimal или находится вне диапазона -
NoSuchElementException- если входные данные исчерпаны -
IllegalStateException- если этот сканер закрыт
reset
public Scanner reset()
Сбрасывает этот сканер.
Сброс сканера отбрасывает всю его явную информацию о состоянии, которая могла быть изменена вызовами useDelimiter(), useLocale() или useRadix().
Вызов этого метода в форме scanner.reset() ведет себя точно так же, как вызов
scanner.useDelimiter("\\p{javaWhitespace}+")
.useLocale(Locale.getDefault(Locale.Category.FORMAT))
.useRadix(10);
- Возвращает:
- этот сканер
- С:
- 1.6
tokens
public Stream<String> tokens()
Возвращает поток токенов, разделенных разделителями из этого сканера. Поток содержит те же токены, которые возвращались бы, начиная с текущего состояния этого сканера, вызовом метода next() повторно до тех пор, пока метод hasNext() не вернет false.
Возвращаемый поток является последовательным и упорядоченным. Все элементы потока не равны null.
Сканирование начинается при инициализации терминальной операции потока, используя текущее состояние этого сканера. Последующие вызовы любых методов этого сканера, кроме close() и ioException(), могут возвращать неопределенные результаты или могут вызывать неопределенные эффекты на возвращаемом потоке. Источник Spliterator возвращаемого потока является немедленным и постарается выбросить ConcurrentModificationException, если любые такие вызовы будут обнаружены во время выполнения потоковой обработки.
После завершения выполнения потоковой обработки, этот сканер находится в неопределенном состоянии и не может быть повторно использован.
Если этот сканер содержит ресурс, который необходимо освободить, этот сканер должен быть закрыт, либо вызвав его метод close(), либо закрыв возвращаемый поток. Закрытие потока закроет лежащий в основе сканер. IllegalStateException будет брошен, если сканер был закрыт, когда был вызван этот метод, или если этот сканер закрыт во время выполнения потоковой обработки.
Этот метод может блокироваться, ожидая большего ввода.
- Примечание API:
- Например, следующий код создаст список токенов, разделенных запятыми, из строки:
List<String> result = new Scanner("abc,def,,ghi") .useDelimiter(",") .tokens() .collect(Collectors.toList());Полученный список будет содержать
"abc","def", пустую строку и"ghi". - Возвращает:
- последовательный поток строковых токенов
- Бросает:
-
IllegalStateException- если этот сканер закрыт - С:
- 9
findAll
public Stream<MatchResult> findAll(Pattern pattern)
Возвращает поток результатов сопоставления из этого сканера. Поток содержит те же результаты в том же порядке, что и при вызове findWithinHorizon(pattern, 0) и затем match() последовательно до тех пор, пока findWithinHorizon() находит соответствия.
Полученный поток является последовательным и упорядоченным. Все элементы потока не равны null.
Сканирование начинается при инициировании терминальной операции потока, используя текущее состояние этого сканера. Последующие вызовы любых методов этого сканера, кроме close() и ioException(), могут вернуть неопределенные результаты или вызвать неопределенные эффекты на возвращаемом потоке. Источник возвращаемого потока Spliterator является быстродействующим и, по возможности, выбросит исключение ConcurrentModificationException, если такие вызовы будут обнаружены во время выполнения конвейера потока.
После завершения выполнения конвейера потока этот сканер остается в неопределенном состоянии и не может быть повторно использован.
Если этот сканер содержит ресурс, который необходимо освободить, этот сканер должен быть закрыт, либо вызвав его метод close(), либо закрыв возвращаемый поток. Закрытие потока закроет сканер нижележащего уровня. IllegalStateException выбрасывается, если сканер был закрыт при вызове этого метода или если этот сканер закрывается во время выполнения конвейера потока.
Как и методы findWithinHorizon(), этот метод может заблокироваться, ожидая дополнительного ввода, и может буферизировать неограниченное количество ввода, ища соответствие.
- Примечание API:
- Например, следующий код прочитает файл и вернёт список всех последовательностей символов, состоящих из семи и более заглавных латинских букв:
try (Scanner sc = new Scanner(Path.of("input.txt"))) { Pattern pat = Pattern.compile("[A-Z]{7,}"); List<String> capWords = sc.findAll(pat) .map(MatchResult::group) .collect(Collectors.toList()); } - Параметры:
-
pattern- шаблон для сопоставления - Возвращает:
- последовательный поток результатов сопоставления
- Исключения:
-
NullPointerException- если шаблон null -
IllegalStateException- если этот сканер закрыт - С:
- 9
findAll
public Stream<MatchResult> findAll(String patString)
Возвращает поток результатов сопоставления, соответствующих предоставленной строке шаблона. Эффект эквивалентен следующему коду:
scanner.findAll(Pattern.compile(patString))
- Параметры:
-
patString- строка шаблона - Возвращает:
- последовательный поток результатов сопоставления
- Исключения:
-
NullPointerException- если patString null -
IllegalStateException- если этот сканер закрыт -
PatternSyntaxException- если синтаксис регулярного выражения некорректен - С:
- 9
- См. также:
Pattern
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Scanner.html