Spec-Zone.ru › OpenJDK 17

Класс 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()) сначала пропускают все входные данные, соответствующие шаблону разделителя, а затем пытаются вернуть следующий токен. Оба метода hasNext() и next() могут блокироваться в ожидании дополнительных входных данных. Блокирование метода hasNext() не связано с тем, будет ли блокироваться связанный с ним метод next(). Метод 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()
Не число
Строка, представляющая не число для значений с плавающей точкой, т.е. dfs.getNaN()
Бесконечность
Строка, представляющая бесконечность для значений с плавающей точкой, т.е. dfs.getInfinity()

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

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

Не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 | Не число | Infinity | Бесконечность
Означенное не число:
( [-+]? Не число )
| Позитивный префикс Не число Позитивный суффикс
| Отрицательный префикс Не число Отрицательный суффикс
Число с плавающей точкой:
Десятичное число | Шестнадцатеричное число с плавающей точкой | Означенное не число

Пробелы не учитываются в вышеприведённых регулярных выражениях.

С:
1.5

Краткое описание конструкторов

Конструктор Описание
Scanner(File source)
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла.
Scanner(File source, String charsetName)
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла.
Scanner(File source, Charset charset)
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла.
Scanner(InputStream source)
Создаёт новый Scanner, который генерирует значения, считанные из указанного потока ввода.
Scanner(InputStream source, String charsetName)
Создаёт новый Scanner, который генерирует значения, считанные из указанного потока ввода.
Scanner(InputStream source, Charset charset)
Создаёт новый Scanner, который генерирует значения, считанные из указанного потока ввода.
Scanner(Readable source)
Создаёт новый Scanner, который генерирует значения, считанные из указанного источника.
Scanner(String source)
Создаёт новый Scanner, который генерирует значения, считанные из указанной строки.
Scanner(ReadableByteChannel source)
Создаёт новый Scanner, который генерирует значения, считанные из указанного канала.
Scanner(ReadableByteChannel source, String charsetName)
Создаёт новый Scanner, который генерирует значения, считанные из указанного канала.
Scanner(ReadableByteChannel source, Charset charset)
Создаёт новый Scanner, который генерирует значения, считанные из указанного канала.
Scanner(Path source)
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла.
Scanner(Path source, String charsetName)
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла.
Scanner(Path source, Charset charset)
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла.

Краткое описание методов

Modifier and Type Method Description
void close()
Закрывает этот сканер.
Pattern delimiter()
Возвращает Pattern , которое используется этим Scanner в настоящее время для сопоставления разделителей.
Stream<MatchResult> findAll(String patString)
Возвращает поток результатов сопоставления, которые соответствуют указанной строке шаблона.
Stream<MatchResult> findAll(Pattern pattern)
Возвращает поток результатов сопоставления из этого сканера.
String findInLine(String pattern)
Попытка найти следующее вхождение шаблона, построенного из указанной строки, игнорируя разделители.
String findInLine(Pattern pattern)
Попытка найти следующее вхождение указанного шаблона, игнорируя разделители.
String findWithinHorizon(String pattern, int horizon)
Попытка найти следующее вхождение шаблона, построенного из указанной строки, игнорируя разделители.
String findWithinHorizon(Pattern pattern, int horizon)
Попытка найти следующее вхождение указанного шаблона.
boolean hasNext()
Возвращает true, если в вводе этого сканера есть другой токен.
boolean hasNext(String pattern)
Возвращает true, если следующий токен соответствует шаблону, построенному из указанной строки.
boolean hasNext(Pattern pattern)
Возвращает true, если следующий полный токен соответствует указанному шаблону.
boolean hasNextBigDecimal()
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как BigDecimal с использованием метода nextBigDecimal().
boolean hasNextBigInteger()
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как BigInteger в стандартном формате, используя метод nextBigInteger().
boolean hasNextBigInteger(int radix)
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как BigInteger в указанном формате, используя метод nextBigInteger().
boolean hasNextBoolean()
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как булево значение, используя регистронезависимый шаблон, созданный из строки "true|false".
boolean hasNextByte()
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как значение типа byte в стандартном формате, используя метод nextByte().
boolean hasNextByte(int radix)
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как значение типа byte в указанном формате, используя метод nextByte().
boolean hasNextDouble()
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как значение типа double, используя метод nextDouble().
boolean hasNextFloat()
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как значение типа float, используя метод nextFloat().
boolean hasNextInt()
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как значение типа int в стандартном формате, используя метод nextInt().
boolean hasNextInt(int radix)
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как значение типа int в указанном формате, используя метод nextInt().
boolean hasNextLine()
Возвращает true, если в вводе этого сканера есть ещё одна строка.
boolean hasNextLong()
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как значение типа long в стандартном формате, используя метод nextLong().
boolean hasNextLong(int radix)
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как значение типа long в указанном формате, используя метод nextLong().
boolean hasNextShort()
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как значение типа short в стандартном формате, используя метод nextShort().
boolean hasNextShort(int radix)
Возвращает true, если следующий токен в вводе этого сканера можно интерпретировать как значение типа short в указанном формате, используя метод nextShort().
IOException ioException()
Возвращает последнее IOException, сгенерированное базовым Readable этого Scanner.
Locale locale()
Возвращает локаль этого сканера.
MatchResult match()
Возвращает результат последней операции сканирования, выполненной этим сканером.
String next()
Находит и возвращает следующий полный токен из этого сканера.
String next(String pattern)
Возвращает следующий токен, если он соответствует шаблону, построенному из указанной строки.
String next(Pattern pattern)
Возвращает следующий токен, если он соответствует указанному шаблону.
BigDecimal nextBigDecimal()
Сканирует следующий токен ввода как BigDecimal.
BigInteger nextBigInteger()
Сканирует следующий токен ввода как BigInteger.
BigInteger nextBigInteger(int radix)
Сканирует следующий токен ввода как BigInteger.
boolean nextBoolean()
Сканирует следующий токен ввода как булево значение и возвращает это значение.
byte nextByte()
Сканирует следующий токен ввода как byte.
byte nextByte(int radix)
Сканирует следующий токен ввода как byte.
double nextDouble()
Сканирует следующий токен ввода как double.
float nextFloat()
Сканирует следующий токен ввода как float.
int nextInt()
Сканирует следующий токен ввода как int.
int nextInt(int radix)
Сканирует следующий токен ввода как int.
String nextLine()
Перемещает этот сканер за текущую строку и возвращает пропущенный ввод.
long nextLong()
Сканирует следующий токен ввода как long.
long nextLong(int radix)
Сканирует следующий токен ввода как long.
short nextShort()
Сканирует следующий токен ввода как short.
short nextShort(int radix)
Сканирует следующий токен ввода как short.
int radix()
Возвращает стандартный формат этого сканера.
void remove()
Операция удаления не поддерживается данной реализацией Iterator.
Scanner reset()
Сбрасывает этот сканер.
Scanner skip(String pattern)
Пропускает вход, соответствующий шаблону, построенному из указанной строки.
Scanner skip(Pattern pattern)
Пропускает входные данные, соответствующие заданному шаблону, игнорируя разделители.
Stream<String> tokens()
Возвращает поток разделителями-разделенных токенов из этого сканера.
String toString()
Возвращает строковое представление этого Scanner.
Scanner useDelimiter(String pattern)
Устанавливает разделяющий шаблон сканера на шаблон, построенный из указанного String.
Scanner useDelimiter(Pattern pattern)
Устанавливает разделяющий шаблон сканера на указанный шаблон.
Scanner useDelimiter(String pattern)
Устанавливает локаль сканера на указанную локаль.
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()
Закрывает этот сканер.

Если этот сканер ещё не закрыт, то если его базовый readable также реализует интерфейс Closeable, то метод close базового readable будет вызван. Если этот сканер уже закрыт, вызов этого метода не повлияет.

Попытка выполнить операции поиска после закрытия сканера приведёт к исключению IllegalStateException.

Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable

ioException

public IOException ioException()
Возвращает последнее исключение, брошенное базовым Readable сканера. Метод возвращает null если такое исключение не существует.
Возвращает:
последнее исключение, брошенное readable сканера

delimiter

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

useDelimiter

public Scanner useDelimiter(Pattern pattern)
Устанавливает шаблон разделителя сканера на указанный шаблон.
Параметры:
pattern - шаблон разделителя
Возвращает:
этот сканер

useDelimiter

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

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

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

Параметры:
pattern - Строка, задающая шаблон разделителя
Возвращает:
этот сканер

locale

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

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

Возвращает:
локаль этого сканера

useLocale

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

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

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

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

radix

public int radix()
Возвращает значение по умолчанию для основания системы счисления этого сканера.

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

Возвращает:
основание системы счисления по умолчанию для этого сканера

useRadix

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

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

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

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

Параметры:
radix - Основание системы счисления для сканирования чисел
Возвращает:
этот сканер
Изначает исключение:
IllegalArgumentException - если основание находится вне допустимого диапазона

match

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

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

Возвращает:
результат сопоставления последней операции сопоставления
Изначает исключение:
IllegalStateException - если результат сопоставления недоступен

toString

public String toString()

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

Переопределяет:
toString в классе Object
Возвращает:
Строковое представление этого сканера

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 и позиция сканера не изменяется. Этот метод может блокироваться, ожидая вход, соответствующий шаблону.

Поскольку этот метод продолжает поиск по вводу, ища указанный шаблон, он может буферизовать весь вход, ища нужный токен, если разделителей строк нет.

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

findWithinHorizon

public String findWithinHorizon(String pattern, int horizon)
Попытка найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители.

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

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

findWithinHorizon

public String findWithinHorizon(Pattern pattern, int horizon)
Попытка найти следующее вхождение указанного шаблона.

Этот метод выполняет поиск по вводу до заданного горизонта поиска, игнорируя разделители. Если шаблон найден, сканер перемещается за вход, соответствующий ему, и возвращает строку, которая соответствовала шаблону. Если такой шаблон не обнаружен, возвращается null, и положение сканера остается неизменным. Этот метод может блокироваться, ожидая вход, соответствующий шаблону.

Сканер никогда не будет искать более horizon символов за пределами своей текущей позиции. Обратите внимание, что совпадение может быть ограничено горизонтом; то есть произвольный результат совпадения мог быть другим, если бы горизонт был больше. Сканер обрабатывает горизонт как прозрачную, не привязанную к началу границу (см. Matcher.useTransparentBounds(boolean) и Matcher.useAnchoringBounds(boolean)).

Если горизонт 0, то горизонт игнорируется, и этот метод продолжает поиск по вводу, ища указанный шаблон без ограничений. В этом случае он может буферизовать весь вход, ища шаблон.

Если горизонт отрицательный, выбрасывается исключение IllegalArgumentException.

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

skip

public Scanner skip(Pattern pattern)
Пропускает вход, соответствующий указанному шаблону, игнорируя разделители. Этот метод пропустит вход, если успешно выполнится привязанное к началу совпадение указанного шаблона.

Если совпадение указанного шаблона не найдено в текущей позиции, то вход не пропускается и выбрасывается исключение NoSuchElementException.

Поскольку этот метод пытается сопоставить указанный шаблон, начиная с текущей позиции сканера, шаблоны, которые могут соответствовать большому количеству ввода (например, ".*"), могут привести к буферизации большого объема ввода.

Обратите внимание, что можно пропустить что-либо, не рискуя получить NoSuchElementException, используя шаблон, который не может ничего сопоставить, например, sc.skip("[ \t]*").

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

skip

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

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

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

hasNextBoolean

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

nextBoolean

public boolean nextBoolean()
Сканирует следующий токен ввода в булево значение и возвращает это значение. Этот метод выбросит InputMismatchException, если следующий токен не может быть преобразован в допустимое булево значение. Если совпадение успешно, сканер перемещается дальше ввода, которому соответствует.
Returns:
сканированное булево значение из ввода
Throws:
InputMismatchException - если следующий токен не является допустимым булевым значением
NoSuchElementException - если вход исчерпан
IllegalStateException - если этот сканер закрыт

hasNextByte

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

hasNextByte

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

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

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

nextByte

public byte nextByte()
Сканирует следующий токен ввода как byte.

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

Returns:
сканированное byte из ввода
Throws:
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.

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

hasNextShort

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

hasNextShort

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

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

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

nextShort

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

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

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

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

hasNextInt

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

hasNextInt

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

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

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

nextInt

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

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

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

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

hasNextLong

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

hasNextLong

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

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

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

nextLong

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

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

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

nextLong

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

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

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

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

hasNextFloat

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

nextFloat

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

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

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

hasNextDouble

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

nextDouble

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

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

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

hasNextBigInteger

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

hasNextBigInteger

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

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

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

nextBigInteger

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

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

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

nextBigInteger

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

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

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

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

hasNextBigDecimal

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

nextBigDecimal

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

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

Returns:
сканированное значение BigDecimal из ввода
Throws:
InputMismatchException - если следующий токен не соответствует регулярному выражению Десятичное число или находится вне диапазона
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, 2021, 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/17/docs/api/java.base/java/util/Scanner.html

Spec-Zone.ru

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