- java.lang.Object
- java.util.Scanner
- Реализованные интерфейсы
Closeable,AutoCloseable,Iterator<String>
public final class Scanner extends Object implements Iterator<String>, Closeable
Текстовый сканер, который разбирает примитивные типы и строки с помощью регулярных выражений.ScannerСканер делит входные данные на токены по шаблону разделителя. По умолчанию шаблон соответствует пробелам. Полученные токены затем преобразуются в значения разных типов с помощью методаnext方法。Например, этот код позволяет пользователю читать числа из
System.inSystem.in:Scanner sc = new Scanner(System.in); int i = sc.nextInt();В качестве другого примера этот код позволяет присваивать значения из файла
myNumbersэлементам.longТип: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();4502201395911 определяет default whitespace delimiter, который использует сканнер.
reset()Метод сбрасывает значение разделителя сканнера на пробел по умолчанию. Это работает независимо от того, менялся ли разделитель ранее.Операция сканирования может блокировать поток в ожидании ввода.
next()МетодыhasNext()и сопутствующие методы, напримерnextInt()иhasNextInt(), сначала пропускают любой ввод, совпадающий с шаблоном разделителя. Затем они пытаются вернуть следующий токен.hasNext()和next()и могут блокировать поток в ожидании дальнейшего ввода.hasNext()Блокирует ли метод, зависит от связанного с нимnext()метода. Он блокирует, еслиnext().tokens()Метод также может блокировать поток в ожидании ввода.Методы
findInLine(),findWithinHorizon(),skip()иfindAll()работают независимо от шаблона разделителя. Эти методы пытаются сопоставить указанный шаблон без учёта разделителей во вводе. Поэтому их используют в особых случаях, когда разделители не важны. Эти методы могут блокировать поток в ожидании ввода.Когда сканнер выбрасывает
InputMismatchException, он не передаёт токен, вызвавший исключение. Токен можно получить или пропустить другими методами.В зависимости от типа шаблона разделения сканнер может возвращать пустые токены. Например, шаблон
"\\s+"не возвращает пустые токены, потому что он совпадает с несколькими экземплярами разделителя."\\s"模式"\\s"может возвращать пустые токены, потому что он пропускает только один пробел за раз.Сканнер может читать текст из любого объекта, реализующего
Readableинтерфейс. Если вызов базового метода чтения выбрасываетread(), сканнер считает, что достигнут конец ввода. ПоследнееIOException, выброшенное базовым источником чтения, можно получить методомioException().IOException。закрывается, он закрывает свой источник ввода. Это происходит, если источник реализует
Scannerинтерфейс.CloseableИспользование без внешней синхронизации небезопасно в многопоточном режиме.ScannerЕсли не указано иное, передача параметрав
null参数传递给null任何方法Scannerприведёт к выбросу исключенияNullPointerException。Если с помощью метода
useRadix(int)не задано иное основание, сканер по умолчанию интерпретирует числа как десятичные. Независимо от того, менялось ли ранее основание сканера, методreset()сбрасывает значение основания сканера на10。Localized numbers
Экземпляры этого класса сканируют числа в стандартном формате и в формате локали сканера. Начальная локаль сканера — это значение, возвращаемое методом
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 Строка, представляющая not-a-number для значений с плавающей точкой, то есть
dfs.getNaN()- LocalInfinity Строка, представляющая бесконечность для значений с плавающей точкой, то есть
dfs.getInfinity()
Number syntax
Строки, которые экземпляры этого класса разбирают как числа, задаются следующей синтаксической конструкцией на основе регулярных выражений. Здесь Rmax — старшая цифра используемой системы счисления. Например, для основания 10 значение Rmax равно 9.
- NonAsciiDigit : не-ASCII символ c,
Character.isDigit(c)возвращает true. Non0Digit :[1-Rmax] |NonASCIIDigit цифра :[0-Rmax] |NonASCIIDigit GroupedNumeral :(Non0Digit Digit?Digit?-
(LocalGroupSeparator цифра цифра цифра)+ ) - цифра :
( (数字+ ) |GroupedNumeral)- Integer :
( [-+]? (数字) )-
|LocalPositivePrefix Число LocalPositiveSuffix |LocalNegativePrefix Число LocalNegativeSuffix Десятичное число : Число|Число LocalDecimalSeparator Число*-
|LocalDecimalSeparator Число+ - Экспонента :
( [eE] [+-]?数字+ )- Decimal :
( [-+]?DecimalNumeral Экспонента? )-
|LocalPositivePrefix DecimalNumeral LocalPositiveSuffix Exponent? -
|LocalNegativePrefix DecimalNumeral LocalNegativeSuffix Exponent? - HexFloat :
[-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+ ([pP][-+]?[0-9]+)?- Нечисловое значение :
NaN |LocalNan| Infinity |LocalInfinity SignedNonNumber :( [-+]?NonNumber)-
|LocalPositivePrefix NonNumber LocalPositiveSuffix |LocalNegativePrefix NonNumber LocalPositiveSuffix Float : Десятичное|HexFloat|SignedNonNumber В приведённых выше регулярных выражениях пробелы не имеют значения.
- Начиная с версии: 1.5
-
-
构造方法摘要
Конструктор Описание Scanner(File source)Создаёт новый объектScanner, который считывает значения из указанного файла.Scanner(File source, String charsetName)Создаёт новый объектScanner, который считывает значения из указанного файла.Scanner(File source, Charset charset)Создаёт новый объектScanner, который считывает значения из указанного файла.Scanner(InputStream source)Создаёт новый объектScanner, который считывает значения из указанного входного потока.Scanner(InputStream source, String charsetName)Создаёт новый объектScanner, который считывает значения из указанного входного потока.Scanner(InputStream source, Charset charset)Создаёт новый объектScanner, который считывает значения из указанного входного потока.Scanner(Readable source)Создаёт новый объектScanner, который считывает значения из указанного источника.Scanner(String source)Создаёт новый объектScanner, который считывает значения из указанной строки.Scanner(ReadableByteChannel source)Создаёт новый объектScanner, он генерирует значения, считанные из указанного канала.Scanner(ReadableByteChannel source, String charsetName)Создаёт новыйScanner, он генерирует значения, считанные из указанного канала.Scanner(ReadableByteChannel source, Charset charset)Создаёт новыйScanner, он генерирует значения, считанные из указанного канала.Scanner(Path source)Создаёт новыйScanner, он генерирует значения, считанные из указанного файла.Scanner(Path source, String charsetName)Создаёт новыйScanner, он генерирует значения, считанные из указанного файла.Scanner(Path source, Charset charset)Создаёт новыйScanner, он генерирует значения, считанные из указанного файла.
-
方法摘要
Все методы Методы экземпляра Конкретные методы Тип и переменная Метод Описание voidclose()Закрывает этот сканер.Patterndelimiter()ВозвращаетPatternэтоScannerразделитель, используемый в данный момент для сопоставления.Stream<MatchResult>findAll(String patString)Возвращает поток результатов сопоставления, соответствующих заданной строке шаблона.Stream<MatchResult>findAll(Pattern pattern)Возвращает поток результатов сопоставления этого сканера.StringfindInLine(String pattern)Пытается найти следующий шаблон, созданный из указанной строки, игнорируя разделители.StringfindInLine(Pattern pattern)Пытается найти следующее совпадение с указанным шаблоном, игнорируя разделители.StringfindWithinHorizon(String pattern, int horizon)Пытается найти следующий шаблон, созданный из указанной строки, игнорируя разделители.StringfindWithinHorizon(Pattern pattern, int horizon)Пытается найти следующее совпадение с указанным шаблоном.booleanhasNext()Возвращает true, если во входных данных этого сканера есть ещё один токен.booleanhasNext(String pattern)Возвращает true, если следующий токен соответствует шаблону, созданному из указанной строки.booleanhasNext(Pattern pattern)Возвращает true, если следующий полный токен соответствует указанному шаблону.booleanhasNextBigDecimal()Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать с помощью методаnextBigDecimal()какBigDecimal则返回true.booleanhasNextBigInteger()Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать с помощью методаnextBigInteger()в системе счисления по умолчанию какBigInteger,则返回true.booleanhasNextBigInteger(int radix)Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать с помощью методаnextBigInteger()в указанной системе счисления какBigInteger,则返回true.booleanhasNextBoolean()Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как логическое значение с помощью шаблона без учёта регистра, созданного из строки "true | false".booleanhasNextByte()Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа byte в системе счисления по умолчанию с помощью методаnextByte().booleanhasNextByte(int radix)Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа byte в указанной системе счисления с помощью методаnextByte().booleanhasNextDouble()Если используетсяnextDouble()метод, который интерпретирует следующий токен из входных данных этого сканера как значение double, возвращается true.booleanhasNextFloat()Если используетсяnextFloat()метод, который интерпретирует следующий токен из входных данных этого сканера как значение с плавающей точкой, возвращается true.booleanhasNextInt()Если используетсяnextInt()метод, который интерпретирует следующий токен из входных данных этого сканера как значение int в системе счисления по умолчанию, возвращается true.booleanhasNextInt(int radix)Если следующий токен из входных данных этого сканера можно интерпретировать с помощьюnextInt()метода как значение int в указанной системе счисления, возвращается true.booleanhasNextLine()Если во входных данных этого сканера есть ещё одна строка, возвращается true.booleanhasNextLong()Если используетсяnextLong()метод, который интерпретирует следующий токен из входных данных этого сканера как значение long в системе счисления по умолчанию, возвращается true.booleanhasNextLong(int radix)Если используетсяnextLong()метод, который интерпретирует следующий токен из входных данных этого сканера как значение long в указанной системе счисления, возвращается true.booleanhasNextShort()Если используетсяnextShort()метод, который интерпретирует следующий токен из входных данных этого сканера как значение short в системе счисления по умолчанию, возвращается true.booleanhasNextShort(int radix)Если следующий токен из входных данных этого сканера можно интерпретировать с помощьюnextShort()метода как значение short в указанной системе счисления, возвращается true.IOExceptionioException()ВозвращаетIOExceptionбазовоеScannerисключение, которое было последним выброшено этимReadable。Localelocale()Возвращает языковой стандарт этого сканера.MatchResultmatch()Возвращает результат сопоставления последней операции сканирования, выполненной этим сканером.Stringnext()Находит и возвращает следующий полный токен из этого сканера.Stringnext(String pattern)Возвращает следующий токен, если он соответствует шаблону, построенному из указанной строки.Stringnext(Pattern pattern)Возвращает следующий токен, если он соответствует указанному шаблону.BigDecimalnextBigDecimal()Считывает следующий токен входных данных какBigDecimal.BigIntegernextBigInteger()Считывает следующий токен входных данных какBigInteger.BigIntegernextBigInteger(int radix)Считывает следующий токен входных данных какBigInteger.booleannextBoolean()Считывает следующий токен входных данных как логическое значение и возвращает его.bytenextByte()Считывает следующий токен входных данных какbyte。bytenextByte(int radix)Считывает следующий токен входных данных какbyte。doublenextDouble()Считывает следующий токен входных данных какdouble。floatnextFloat()Считывает следующий токен входных данных какfloat。intnextInt()Сканировать следующий токен ввода какint。intnextInt(int radix)Сканирует следующий токен ввода какint。StringnextLine()Продвигает этот сканер за текущую строку и возвращает пропущенный ввод.longnextLong()Сканировать следующий токен ввода какlong。longnextLong(int radix)Сканирует следующий токен входных данных какlong。shortnextShort()Сканировать следующий токен входных данных какshort。shortnextShort(int radix)Сканировать следующий токен ввода какshort。intradix()Возвращает основание системы счисления по умолчанию для этого сканера.voidremove()IteratorЭта реализация не поддерживает операцию удаления.Scannerreset()Сбрасывает этот сканер.Scannerskip(String pattern)Пропускает ввод, соответствующий шаблону, построенному из указанной строки.Scannerskip(Pattern pattern)Пропускает ввод, соответствующий указанному шаблону, игнорируя разделители.Stream<String>tokens()Возвращает поток токенов, разделённых разделителями, из этого сканера.StringtoString()Возвращает строковое представление этогоScannerстроковое представлениеScanner。ScanneruseDelimiter(String pattern)Устанавливает шаблон разделителя этого сканера в шаблон, построенный из указанногоString.ScanneruseDelimiter(Pattern pattern)Устанавливает шаблон разделителя этого сканера в указанный шаблон.ScanneruseLocale(Locale locale)Устанавливает языковой стандарт этого сканера в указанный языковой стандарт.ScanneruseRadix(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, который генерирует значения, отсканированные из указанного входного потока. Байты в потоке преобразуются в символы с использованием default charset базовой платформы.- Параметры
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, который выдаёт значения, считанные из указанного файла. Байты из файла преобразуются в символы с помощью default charset базовой платформы.- Параметры
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, который выдаёт значения, считанные из указанного файла. Байты из файла преобразуются в символы с помощью default charset базовой платформы.- Параметры
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, который выдает значения, считанные из указанного канала. Байты из источника преобразуются в символы с помощью default charset базовой платформы.- Параметры
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()
Закрывает этот сканер. Если этот сканер ещё не закрыт и его базовый readable также реализуетCloseableинтерфейс, будет вызван метод readableclose. Если этот сканер уже закрыт, вызов этого метода не даст эффекта.Попытка выполнить операцию поиска после закрытия сканера приведёт к
IllegalStateException.- Specified by:
close在界面AutoCloseable- Specified by:
close在界面Closeable
-
ioException
public IOException ioException()
ВозвращаетIOExceptionбазовыйScanner, выброшенный последним через этотReadable. Если такого исключения нет, метод возвращаетnull。- Результат Последнее исключение, выброшенное readable этого сканера
-
delimiter
public Pattern delimiter()
ВозвращаетPatternэтотScanner, который в данный момент используется для сопоставления разделителя.- Результат Шаблон разделителя этого сканера.
-
useDelimiter
public Scanner useDelimiter(Pattern pattern)
Устанавливает шаблон разделителя этого сканера в указанный шаблон.- Параметры
pattern-patternшаблон Результат Этот сканер
-
useDelimiter
public Scanner useDelimiter(String pattern)
Устанавливает шаблон разделителя этого сканера в шаблон, построенный из указаннойStringстроки. Вызов этого метода в формеuseDelimiter(pattern)ведёт себя так же, как вызовuseDelimiter(Pattern.compile(pattern))。Вызов
reset()метода устанавливает разделитель сканера в default .- Параметры
pattern- строка, задающая шаблон разделителя Результат Этот сканер
-
locale
public Locale locale()
Возвращает языковой стандарт этого сканера. Языковой стандарт сканера влияет на многие элементы сопоставления примитивов по умолчанию, см. localized numbers выше.- Результат Языковой стандарт этого сканера
-
useLocale
public Scanner useLocale(Locale locale)
Устанавливает языковой стандарт этого сканера в указанное значение. Языковой стандарт сканера влияет на многие элементы примитивов, сопоставляемых с регулярным выражением. См. раздел localized numbers выше.Вызов
reset()метода устанавливает языковой стандарт сканера в initial locale.- Параметры
locale- строка, задающая используемый языковой стандарт. Результат Этот сканер
-
radix
public int radix()
Возвращает основание системы счисления по умолчанию для этого сканера. Основание сканера влияет на числовые элементы по умолчанию, сопоставляемые с регулярным выражением. См. раздел localized numbers выше.- Результат Основание системы счисления по умолчанию для этого сканера
-
useRadix
public Scanner useRadix(int radix)
Устанавливает основание системы счисления этого сканера в указанное значение. Основание сканера влияет на числовые элементы по умолчанию, сопоставляемые с регулярным выражением. См. раздел localized numbers выше.Если основание меньше
Character.MIN_RADIXили большеCharacter.MAX_RADIX,则抛出IllegalArgumentException。Вызов
reset()метода устанавливает основание сканера в10。- Параметры
radix- основание системы счисления для сканирования чисел. Результат Этот сканер. ИсключенияIllegalArgumentException- если основание выходит за пределы диапазона
-
match
public MatchResult match()
Возвращает результат сопоставления последней операции сканирования этого сканера. Если сопоставление не выполнялось или последнее сопоставлениеIllegalStateExceptionне удалось, этот метод выбрасываетIllegalStateException. Различныеnext的方法Scannerделают результат сопоставления доступным, если они завершились без исключения. Например, после вызова метода, возвращающего int,nextInt()этот метод возвращаетMatchResultдля поиска регулярного выражения Integer, определённого выше. Аналогично,findInLine(),findWithinHorizon()иskip()методы возвращают результат сопоставления, если они завершились успешно.- Результат Результат сопоставления последней операции сопоставления. Исключения
IllegalStateException- если результат сопоставления недоступен
-
toString
public String toString()
Возвращает строковое представление этого
Scanner的字符串表示Scanner.Scanner的字符串表示Scannerсодержит информацию, полезную при отладке. Конкретный формат не определён.
-
hasNext
public boolean hasNext()
Возвращает true, если во входных данных этого сканера есть ещё один токен. При ожидании сканирования ввода этот метод может блокироваться. Сканер не продвигается дальше по вводу.- Указано в:
hasNext, интерфейсIterator<String>- Результат: возвращает true тогда и только тогда, когда у этого сканера есть ещё один токен. Исключения
IllegalStateException- если этот сканер закрыт. См. также:Iterator
-
next
public String next()
Находит и возвращает следующий полный токен из этого сканера. Перед токеном и после него находится ввод, соответствующий шаблону разделителя. Даже если предыдущий вызовhasNext()返回true, этот метод может блокироваться при ожидании сканирования вводаtrue。- Указано в:
nextинтерфейсIterator<String>- Результат: следующий токен. Исключения
NoSuchElementException- если больше нет доступных токеновIllegalStateException- если этот сканер закрыт. См. также:Iterator
-
remove
public void remove()
IteratorЭта реализация не поддерживает операцию удаления.- Указано в:
remove在界面Iterator<String>- Исключения
UnsupportedOperationException- если вызывается этот метод. См. также:Iterator
-
hasNext
public boolean hasNext(String pattern)
Возвращает true, если следующий токен соответствует шаблону, построенному из указанной строки. Сканер не продвигается дальше по вводу. Вызов этого метода в формеhasNext(pattern)ведёт себя так же, как вызовhasNext(Pattern.compile(pattern))。- Параметры
pattern- строка, задающая шаблон для сканирования. Результат: возвращает true тогда и только тогда, когда у этого сканера есть ещё один токен, соответствующий указанному шаблону. ИсключенияIllegalStateException- если этот сканер закрыт
-
next
public String next(String pattern)
Возвращает следующий токен, если он соответствует шаблону, построенному из указанной строки. При успешном совпадении сканер продвигается дальше по вводу, соответствующему шаблону. Вызов этого метода в формеnext(pattern)ведёт себя так же, как вызовnext(Pattern.compile(pattern))方式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этот метод может блокироваться в ожидании ввода для сканирования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)).Если horizon равен
0, горизонт игнорируется, и этот метод продолжает поиск заданного шаблона во входных данных без ограничений. В этом случае он может буферизовать весь ввод при поиске шаблона.Если horizon отрицательный, выбрасывается IllegalArgumentException.
- Параметры
pattern- шаблон для сканированияhorizon- диапазон поиска Результат текст, соответствующий заданному шаблону ИсключенияIllegalStateException- если этот сканер закрытIllegalArgumentException- если горизонт отрицательный
-
skip
public Scanner skip(Pattern pattern)
Пропускает ввод, соответствующий заданному шаблону, игнорируя разделители. Если анкерное совпадение с заданным шаблоном успешно, этот метод пропускает ввод. Если в текущей позиции совпадение с заданным шаблоном не найдено, ввод не пропускается и выбрасываетсяNoSuchElementException。Поскольку этот метод пытается сопоставить заданный шаблон, начиная с текущей позиции сканера, шаблон, способный совпасть с большим объёмом ввода (например, ".*"), может привести к буферизации сканером большого объёма ввода.
Обратите внимание, что можно пропустить что-то, используя шаблон, который не может совпасть (например,
sc.skip("[ \t]*")), без рискаNoSuchElementException.- Параметры
pattern- строка, задающая шаблон для пропуска Результат этот сканер ИсключенияNoSuchElementException- если заданный шаблон не найденIllegalStateException- если этот сканер закрыт
-
skip
public Scanner skip(String pattern)
Пропускает ввод, соответствующий шаблону, построенному из заданной строки. Вызов этого метода в формеskip(pattern)ведёт себя так же, как вызовskip(Pattern.compile(pattern))方式skip(Pattern.compile(pattern))。- Параметры
pattern- строка, задающая шаблон для пропуска Результат этот сканер ИсключенияIllegalStateException- если этот сканер закрыт
-
hasNextBoolean
public boolean hasNextBoolean()
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как логическое значение с помощью шаблона без учёта регистра, созданного из строки "true | false". Сканер не продвигается дальше совпавших входных данных.- Результат true тогда и только тогда, когда следующий токен этого сканера является допустимым логическим значением. Исключения
IllegalStateException- если этот сканер закрыт
-
nextBoolean
public boolean nextBoolean()
Считывает следующий токен ввода как логическое значение и возвращает его. Если следующий токен нельзя преобразовать в допустимое логическое значение, метод выбрасываетInputMismatchException. При успешном совпадении сканер продвигается дальше совпавших входных данных.- Результат логическое значение, считанное из ввода. Исключения
InputMismatchException- если следующий токен не является допустимым логическим значениемNoSuchElementException- если ввод исчерпанIllegalStateException- если этот сканер закрыт
-
hasNextByte
public boolean hasNextByte()
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа byte в системе счисления по умолчанию с помощью методаnextByte(). Сканер не продвигается дальше входных данных.- Результат true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа byte. Исключения
IllegalStateException- если этот сканер закрыт
-
hasNextByte
public boolean hasNextByte(int radix)
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение типа byte в указанной системе счисления с помощью методаnextByte(). Сканер не продвигается дальше входных данных. Если система счисления меньшеCharacter.MIN_RADIXили большеCharacter.MAX_RADIX,则抛出IllegalArgumentException。- Параметры
radix- система счисления для интерпретации токена как значения типа byte. Результат true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа byte. ИсключенияIllegalStateException- если этот сканер закрытIllegalArgumentException- если система счисления вне допустимого диапазона
-
nextByte
public byte nextByte()
Считывает следующий токен ввода какbyte. Вызов этого метода в формеnextByte()ведёт себя так же, как вызовnextByte(radix),其中radix— система счисления по умолчанию этого сканера.- Результат
byteсчитанное из ввода значение. ИсключенияInputMismatchException- если следующий токен не соответствует регулярному выражению целого числа или выходит за пределы диапазонаNoSuchElementException- если ввод исчерпанIllegalStateException- если этот сканер закрыт
-
nextByte
public byte nextByte(int radix)
Считывает следующий токен ввода какbyte. Если следующий токен нельзя преобразовать в допустимое значение типа byte, метод выбрасываетInputMismatchException, как описано ниже. При успешном преобразовании сканер продвигается дальше совпавших входных данных. Если следующий токен соответствует регулярному выражению Integer, определённому выше, токен преобразуется вbyteЗначение, как при удалении всех префиксов, специфичных для локали, разделителей групп и суффиксов, специфичных для локали, а затемCharacter.digitпутём отображения не-ASCII цифр в ASCII цифры. Если существуют префикс и суффикс отрицательного значения, специфичные для локали, знак минус ( - ) передаётся с указанным основанием вByte.parseByte.Если основание меньше
Character.MIN_RADIXили большеCharacter.MAX_RADIX,则抛出IllegalArgumentException。- Параметры
radix- основание для интерпретации токена как значения типа byte Результат сканируется из входных данныхbyte- Исключения
InputMismatchException- если следующий токен не соответствует регулярному выражению целого числа или выходит за пределы диапазонаNoSuchElementException- если входные данные исчерпаныIllegalStateException- если этот сканер закрытIllegalArgumentException- если основание вне допустимого диапазона
-
hasNextShort
public boolean hasNextShort()
Возвращает true, если следующий токен во входных данных этого сканераnextShort()интерпретируется методом как короткое значение в основании по умолчанию. Сканер не продвигается дальше по входным данным.- Результат true тогда и только тогда, когда следующий токен этого сканера является допустимым коротким значением в основании по умолчанию Исключения
IllegalStateException- если этот сканер закрыт
-
hasNextShort
public boolean hasNextShort(int radix)
Возвращает true, если следующий токен во входных данных этого сканераnextShort()интерпретируется методом как короткое значение в указанном основании. Сканер не продвигается дальше по входным данным. Если основание меньшеCharacter.MIN_RADIXили большеCharacter.MAX_RADIX,则抛出IllegalArgumentException。- Параметры
radix- основание для интерпретации токена как короткого значения Результат true тогда и только тогда, когда следующий токен этого сканера является допустимым коротким значением в указанном основании ИсключенияIllegalStateException- если этот сканер закрытIllegalArgumentException- если основание вне допустимого диапазона
-
nextShort
public short nextShort()
Сканирует следующий токен входных данных какshort. Вызов этого метода в формеnextShort()ведёт себя точно так же, как вызовnextShort(radix), гдеradix— основание по умолчанию этого сканера.- Результат сканируется из входных данных
short- Исключения
InputMismatchException- если следующий токен не соответствует регулярному выражению целого числа или выходит за пределы диапазонаNoSuchElementException- если входные данные исчерпаныIllegalStateException- если этот сканер закрыт
-
nextShort
public short nextShort(int radix)
Считывает следующий токен из входных данных какshort. Если следующий токен нельзя преобразовать в корректное значение типа short, метод выбрасываетInputMismatchException, как описано ниже. При успешном переводе сканер продвигается за совпавший ввод. Если следующий токен соответствует регулярному выражению Integer, определённому выше, токен преобразуется вshortзначение так, как будто удалены все префиксы, разделители групп и суффиксы, зависящие от локали, затем черезCharacter.digitне-ASCII цифры отображаются в ASCII цифры, а если существуют отрицательный префикс и суффикс локали, знак минус ( - ) передаётся в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- если следующий токен не соответствует регулярному выражению целого числа или выходит за пределы диапазонаNoSuchElementException- если входные данные исчерпаныIllegalStateException- если этот сканер закрыт
-
nextInt
public int nextInt(int radix)
Сканирует следующий токен из входных данных какint. Если следующий токен нельзя преобразовать в допустимое значение int, этот метод выбрасываетInputMismatchException, как описано ниже. При успешном преобразовании сканер переходит за совпавший ввод. Если следующий токен соответствует регулярному выражению Integer, определённому выше, токен преобразуется вintзначение так, как будто удаляются все префиксы, разделители групп и суффиксы, зависящие от локали, затем черезCharacter.digitне-ASCII цифры отображаются в ASCII цифры, добавляется знак минус (-), если есть отрицательный префикс и суффикс локали, и результирующая строка передаётся вInteger.parseIntс указанным основанием.Если основание меньше
Character.MIN_RADIXили большеCharacter.MAX_RADIX,则抛出IllegalArgumentException。- Параметры
radix- основание для интерпретации токена как значения int РезультатintСканирует из входных данных. ИсключениеInputMismatchException- если следующий токен не соответствует регулярному выражению целого числа или выходит за пределы диапазонаNoSuchElementException- если входные данные исчерпаныIllegalStateException- если этот сканер закрытIllegalArgumentException- если основание выходит за пределы диапазона
-
hasNextLong
public boolean hasNextLong()
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать методомnextLong()как значение long в системе счисления по умолчанию. Сканер не переходит за ввод.- Результат true тогда и только тогда, когда следующий токен этого сканера является допустимым значением long. Исключение
IllegalStateException- если этот сканер закрыт
-
hasNextLong
public boolean hasNextLong(int radix)
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать методомnextLong()как значение long в указанной системе счисления. Сканер не переходит за ввод. Если основание меньше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. Если следующий токен нельзя преобразовать в допустимое значение типа long, этот метод выбрасываетInputMismatchException, как описано ниже. При успешном преобразовании сканер продвигается за совпавшие входные данные. Если следующий токен соответствует регулярному выражению Integer, определённому выше, токен преобразуется вlongзначение так, как будто удаляются все префиксы, разделители групп и суффиксы, зависящие от локали, затем черезCharacter.digitне-ASCII цифры отображаются на ASCII цифры, ставится знак минус ( - ), если есть отрицательный префикс и суффикс локали, а результирующая строка передаётся вLong.parseLongс указанным основанием системы счисления.Если основание меньше
Character.MIN_RADIXили большеCharacter.MAX_RADIX,则抛出IllegalArgumentException。- Параметры
radix— основание системы счисления для интерпретации токена как значения int Результат Сканирует из входных данныхlong- Исключения
InputMismatchException— если следующий токен не соответствует регулярному выражению Integer или выходит за пределы диапазонаNoSuchElementException— если входные данные исчерпаныIllegalStateException— если этот сканер закрытIllegalArgumentException— если основание системы счисления вне допустимого диапазона
-
hasNextFloat
public boolean hasNextFloat()
Возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать как значение с плавающей точкой с помощью методаnextFloat(). Сканер не продвигается за входные данные.- Результат Возвращает true тогда и только тогда, когда следующий токен этого сканера является допустимым значением с плавающей точкой Исключения
IllegalStateException— если этот сканер закрыт
-
nextFloat
public float nextFloat()
Сканирует следующий токен входных данных какfloat. Если следующий токен нельзя преобразовать в допустимое значение с плавающей точкой, этот метод выбрасываетInputMismatchException, как описано ниже. При успешном преобразовании сканер продвигается за совпавшие входные данные. Если следующий токен соответствует регулярному выражению Float, определённому выше, токен преобразуется вfloatзначение так, как будто удаляются все префиксы, разделители групп и суффиксы, зависящие от локали, затем черезCharacter.digitне-ASCII цифры отображаются на ASCII цифры, ставится знак минус ( - ), если есть отрицательный префикс и суффикс локали, а результирующая строка передаётся вFloat.parseFloat. Если токен соответствует локализованной строке NaN или бесконечности, вFloat.parseFloatпередаётся «NaN» или «Infinity» по мере необходимости.- Результат Сканирует из входных данных
float- Исключения
InputMismatchException- если следующий токен не соответствует регулярному выражению Float или выходит за пределы диапазонаNoSuchElementException- если ввод исчерпанIllegalStateException- если этот сканер закрыт
-
hasNextDouble
public boolean hasNextDouble()
Возвращает true, если следующий токен во входных данных этого сканераnextDouble()можно интерпретировать как значение double с помощью метода. Сканер не продвигается дальше по вводу.- Результат true тогда и только тогда, когда следующий токен этого сканера является допустимым значением double. Исключения
IllegalStateException- если этот сканер закрыт
-
nextDouble
public double nextDouble()
Считывает следующий токен ввода какdouble. Если следующий токен нельзя преобразовать в допустимое значение double, этот метод выбрасываетInputMismatchException. Если преобразование прошло успешно, сканер продвигается дальше по совпавшему вводу. Если следующий токен соответствует регулярному выражению Float, определённому выше, токен преобразуется вdoubleзначение так, как если бы сначала удалили все префиксы, разделители групп и суффиксы, зависящие от локали, затем с помощьюCharacter.digitотобразили не-ASCII цифры в ASCII цифры, а затем, если существуют отрицательный префикс и суффикс локали, передали знак минус ( - ) вDouble.parseDouble. Если токен совпадает с локализованной строкой NaN или бесконечности, строки "NaN" или "Infinity" при необходимости передаются вDouble.parseDouble.- Результат считывает из ввода
double- Исключения
InputMismatchException- если следующий токен не соответствует регулярному выражению Float или выходит за пределы диапазонаNoSuchElementException- если ввод исчерпанIllegalStateException- если этот сканер закрыт
-
hasNextBigInteger
public boolean hasNextBigInteger()
Возвращает true, если следующий токен во входных данных этого сканераnextBigInteger()можно интерпретировать в системе счисления по умолчанию с помощью методаBigInteger. Сканер не продвигается дальше по вводу.- Результат true тогда и только тогда, когда следующий токен этого сканера является допустимым
BigInteger- Исключения
IllegalStateException- если этот сканер закрыт
-
hasNextBigInteger
public boolean hasNextBigInteger(int radix)
Возвращает true, если следующий токен во входных данных этого сканераnextBigInteger()можно интерпретировать в указанной системе счисления с помощью методаBigInteger. Сканер не продвигается дальше по вводу. Если основание системы счисления меньшеCharacter.MIN_RADIXили большеCharacter.MAX_RADIX,则抛出IllegalArgumentException。- Параметры
radix- основание системы счисления для интерпретации токена как целого числа. Результат true тогда и только тогда, когда следующий токен этого сканера является допустимымBigInteger- Исключения
IllegalStateException- если этот сканер закрытIllegalArgumentException- если основание выходит за пределы диапазона
-
nextBigInteger
public BigInteger nextBigInteger()
сканирует следующий токен из входных данных какBigInteger. ВызовnextBigInteger()этого метода в формеnextBigInteger(radix),其中radix, где- — основание по умолчанию этого сканера.
BigIntegerРезультатInputMismatchExceptionсканируется из входных данных. ИсключенияNoSuchElementException- если следующий токен не соответствует регулярному выражению Integer или выходит за пределы диапазонаIllegalStateException- если входные данные исчерпаны
-
nextBigInteger
public BigInteger nextBigInteger(int radix)
nextBigIntegerBigIntegerсканирует следующий токен из входных данных какBigInteger. Если следующий токен соответствует регулярному выражению Integer, определённому выше, токен преобразуется в значениеCharacter.digitтак, как будто все разделители групп удалены, не-ASCII цифры отображаются в ASCII цифры черезBigInteger(String, int), а результирующая строка передаётся конструктору с указанным основанием.Если основание меньше
Character.MIN_RADIXили большеCharacter.MAX_RADIX,则抛出IllegalArgumentException。- Параметры
radix- основание для интерпретации токена. РезультатBigInteger- сканируется из входных данных. Исключения
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или выходит за пределы диапазонаNoSuchElementException- если входные данные исчерпаныIllegalStateException- если этот сканер закрытIllegalArgumentException- если основание выходит за пределы диапазона
-
hasNextBigDecimal
public boolean hasNextBigDecimal()
возвращает true, если следующий токен во входных данных этого сканера можно интерпретировать какnextBigDecimal()с помощью методаBigDecimal. Сканер не продвигается дальше по входным данным.- Результат: true тогда и только тогда, когда следующий токен этого сканера является допустимым
BigDecimal- Исключения
IllegalStateException- если этот сканер закрыт
-
nextBigDecimal
public BigDecimal nextBigDecimal()
сканирует следующий токен из входных данных какBigDecimal. Если следующий токен соответствует регулярному выражению Decimal, определённому выше, токен преобразуется в значениеBigDecimalтак, как будто все разделители групп удалены, черезCharacter.digitОтображает не-ASCII цифры в ASCII-цифры и передаёт полученную строку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()находит совпадения, поток содержит те же результаты в том же порядке, полученные вызовомfindWithinHorizon(pattern, 0)иmatch()Возврат. Полученный поток является последовательным и упорядоченным. Все элементы потока не равны null.Сканирование начинается с текущего состояния сканера в момент запуска терминальной операции потока. Последующие вызовы
close()любого метода этого сканера, кромеioException()иSpliterator, могут вернуть неопределённый результат или неопределённо повлиять на возвращённый поток. Источник возвращённого потокаConcurrentModificationExceptionработает по принципу fail-fast. При обнаружении таких вызовов во время выполнения конвейера потока будет сделана попытка выбросить.
После завершения выполнения конвейера потока сканер находится в неопределённом состоянии и не подлежит повторному использованию.
close()Если сканер содержит ресурсы, которые необходимо освободить, закройте его вызовом методаIllegalStateException。.
findWithinHorizon()Как и метод- , этот метод может блокироваться в ожидании других входных данных и может буферизовать неограниченный объём входных данных при поиске совпадения.
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()); }- Примечание к API: например, следующий код читает файл и возвращает список всех последовательностей символов из семи и более латинских заглавных букв:
patternПараметрыNullPointerException- шаблон для сопоставления Результат поток последовательных результатов сопоставления ИсключенияIllegalStateException- если pattern равен null
-
findAll
public Stream<MatchResult> findAll(String patString)
findAllscanner.findAll(Pattern.compile(patString))- Возвращает поток результатов сопоставления, соответствующих заданной строке шаблона. Эффект эквивалентен следующему коду:
patStringПараметрыNullPointerException- строка шаблона Результат поток последовательных результатов сопоставления ИсключенияIllegalStateException- если patString равна nullPatternSyntaxException- если этот сканер закрытPattern
-
-