Spec-Zone.ru › OpenJDK 21

Класс Scanner

java.lang.Object
java.util.Scanner
Все реализованные интерфейсы:
Closeable, AutoCloseable, Iterator<String>
public final class Scanner extends Object implements Iterator<String>, Closeable
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений.

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

Например, этот код позволяет пользователю считать число из консоли.

    var con = System.console();
    if (con != null) {
        Scanner sc = new Scanner(con.reader());
        int i = sc.nextInt();
    }

В качестве другого примера, этот код позволяет назначить типы из записей в файле:

     Scanner sc = new Scanner(new File("myNumbers"));
     while (sc.hasNextLong()) {
         long aLong = sc.nextLong();
     }

Сканер также может использовать разделители, отличные от пробелов. Этот пример считывает несколько элементов из строки:

    String input = "1 fish 2 fish red fish blue fish";
    Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
    System.out.println(s.nextInt());
    System.out.println(s.nextInt());
    System.out.println(s.next());
    System.out.println(s.next());
    s.close();

печатает следующий вывод:


     1
     2
     red
     blue
 

Тот же вывод можно получить с помощью этого кода, который использует регулярное выражение для анализа всех четырёх токенов сразу:

    String input = "1 fish 2 fish red fish blue fish";
    Scanner s = new Scanner(input);
    s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
    MatchResult result = s.match();
    for (int i=1; i<=result.groupCount(); i++)
        System.out.println(result.group(i));
    s.close();

По умолчанию используемый сканером разделитель пробелов определяется как разделитель пробелов по умолчанию в соответствии с Character.isWhitespace(). Метод reset() сбросит значение разделителя сканера на значение по умолчанию, независимо от того, было ли оно ранее изменено.

Операция сканирования может заблокироваться, ожидая ввода.

Методы next() и hasNext() и их аналоги (такие как nextInt() и hasNextInt()) сначала пропускают любой ввод, соответствующий шаблону разделителя, а затем пытаются вернуть следующий токен. Оба метода могут заблокироваться, ожидая дальнейшего ввода. Блокируется ли метод сканирования, никак не зависит от того, будет ли заблокирован его соответствующий метод проверки. Метод tokens() также может заблокироваться, ожидая ввода.

Методы findInLine(), findWithinHorizon(), skip() и findAll() работают независимо от шаблона разделителя. Эти методы будут пытаться сопоставить указанный шаблон без учета разделителей во вводе и, таким образом, могут быть использованы в особых случаях, когда разделители не важны. Эти методы могут заблокироваться, ожидая большего ввода.

Когда сканер выбрасывает исключение InputMismatchException, сканер не пропускает токен, вызвавший исключение, поэтому его можно получить или пропустить с помощью другого метода.

В зависимости от типа шаблона разделителя могут возвращаться пустые токены. Например, шаблон "\\s+" не вернет пустых токенов, так как он соответствует нескольким экземплярам разделителя. Шаблон разделителя "\\s" может возвращать пустые токены, так как он пропускает только один пробел за раз.

Сканер может читать текст из любого объекта, реализующего интерфейс Readable. Если вызов метода read() базового объекта readable генерирует исключение IOException, то сканер предполагает, что достигнут конец ввода. Последнее исключение IOException, сгенерированное базовым объектом readable, можно получить с помощью метода 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 в основании 10).

Символ не ASCII:
Символ c, не являющийся символом ASCII, для которого 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, который генерирует значения, считанные из указанного файла.

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

Модификатор и тип Метод Описание
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()
Возвращает последнее исключение, сгенерированное базовым 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)
Устанавливает разделительный шаблон этого сканера на указанный шаблон.
END_OF_DOCUMENT_MARKER
Scanner useLocale(Locale locale)
Устанавливает локаль этого сканера в указанную локаль.
Scanner useRadix(int radix)
Устанавливает значение по умолчанию для основания этого сканера в указанное основание.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Методы, объявленные в интерфейсе java.util.Iterator

forEachRemaining

Подробное описание конструкторов

Scanner

public Scanner(Readable source)
Создаёт новый объект Scanner, который считывает значения из указанного источника.
Параметры:
source - Источник символов, реализующий интерфейс Readable

Scanner

public Scanner(InputStream source)
Создаёт новый объект Scanner, который считывает значения из указанного потока ввода. Байты из потока преобразуются в символы с использованием по умолчанию кодировки.
Параметры:
source - Поток ввода для сканирования
См. также:
  • Charset.defaultCharset()

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 - если исходный файл не найден
См. также:
  • Charset.defaultCharset()

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
См. также:
  • Charset.defaultCharset()

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 - Канал для сканирования
См. также:
  • Charset.defaultCharset()

Scanner

public Scanner(ReadableByteChannel source, String charsetName)
Создаёт новый объект Scanner, который считывает значения из указанного канала. Байты из источника преобразуются в символы с использованием указанной кодировки.
Параметры:
source - Канал для сканирования
charsetName - Тип кодировки, используемый для преобразования байтов из канала в символы для сканирования
Исключения:
IllegalArgumentException - если указанная кодировка не существует

Scanner

public Scanner(ReadableByteChannel source, Charset charset)
Создаёт новый объект Scanner, который считывает значения из указанного канала. Байты из источника преобразуются в символы с использованием указанной кодировки.
Параметры:
source - Канал для сканирования
charset - Тип кодировки, используемый для преобразования байтов из канала в символы для сканирования
С:
10

Подробное описание методов

close

public void close()
Закрывает этот сканер.

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

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

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

ioException

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

delimiter

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

useDelimiter

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

useDelimiter

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

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

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

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

locale

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

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

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

useLocale

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

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

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

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

radix

public int radix()
Возвращает стандартный радикс этого сканера.

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

Returns:
стандартный радикс этого сканера

useRadix

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

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

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

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

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

match

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

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

Returns:
результат сопоставления последней операции
Throws:
IllegalStateException - Если результат сопоставления недоступен

toString

public String toString()

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

Overrides:
toString в классе Object
Returns:
строковое представление этого сканера

hasNext

public boolean hasNext()
Возвращает true, если этот сканер имеет другой токен в своем вводе. Этот метод может блокироваться во время ожидания ввода для сканирования. Сканер не пропускает никакой ввод.
Specified by:
hasNext в интерфейсе Iterator<String>
Returns:
true, если и только если у этого сканера есть другой токен
Throws:
IllegalStateException - если этот сканер закрыт
See Also:
  • Iterator

next

public String next()
Находит и возвращает следующий полный токен из этого сканера. Полный токен предваряется и следует за вводом, который соответствует шаблону разделителя. Этот метод может блокироваться во время ожидания ввода для сканирования, даже если предыдущий вызов hasNext() вернул true.
Specified by:
next в интерфейсе Iterator<String>
Returns:
следующий токен
Throws:
NoSuchElementException - если больше нет токенов
IllegalStateException - если этот сканер закрыт
See Also:
  • Iterator

remove

public void remove()
Операция remove не поддерживается этой реализацией Iterator.
Specified by:
remove в интерфейсе Iterator<String>
Throws:
UnsupportedOperationException - если этот метод вызывается.
See Also:
  • Iterator

hasNext

public boolean hasNext(String pattern)
Возвращает true, если следующий токен соответствует шаблону, созданному из указанной строки. Сканер не перемещается дальше по вводу.

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

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

next

public String next(String pattern)
Возвращает следующий токен, если он соответствует шаблону, созданному из указанной строки. Если сопоставление успешно, сканер перемещается за ввод, который соответствовал шаблону.

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

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

hasNext

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

next

public String next(Pattern pattern)
Возвращает следующий токен, если он соответствует указанному шаблону. Этот метод может блокироваться, ожидая ввода для сканирования, даже если предыдущий вызов hasNext(Pattern) вернул true. Если сопоставление успешно, сканер перемещается за ввод, который соответствовал шаблону.
Parameters:
pattern - шаблон для сканирования
Returns:
следующий токен
Throws:
NoSuchElementException - если больше нет токенов
IllegalStateException - если этот сканер закрыт

hasNextLine

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

nextLine

public String nextLine()
Перемещает этот сканер за текущую строку и возвращает пропущенный ввод. Этот метод возвращает остаток текущей строки, исключая любой разделитель строк в конце. Позиция устанавливается в начало следующей строки.

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

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

findInLine

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

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

Parameters:
pattern - строка, определяющая шаблон для поиска
Returns:
текст, соответствующий указанному шаблону
Throws:
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, как описано ниже. Если преобразование успешно, сканер переходит к следующей части входного потока, соответствующей этому токену.

Если следующий токен соответствует регулярному выражению Целое число, определённому выше, то токен преобразуется в значение типа short так, как если бы были удалены все префиксы, разделители групп и суффиксы, зависящие от локали, затем не-ASCII цифры были заменены на ASCII цифры с помощью Character.digit, префикс «-» добавляется, если присутствуют префиксы и суффиксы для отрицательных значений, зависящие от локали, и полученная строка передается в Short.parseShort со специфицированным основанием.

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

Параметры:
radix - основание, используемое для интерпретации токена как значения типа short
Возвращает:
сканированное из входного потока значение типа short
Исключения:
InputMismatchException - если следующий токен не соответствует регулярному выражению Целое число или находится вне диапазона
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. Этот метод выбросит InputMismatchException если следующий токен не может быть преобразован в допустимое значение типа int, как описано ниже. Если преобразование успешно, сканер переходит к следующей части входного потока, соответствующей этому токену.

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

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

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

hasNextLong

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

hasNextLong

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

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

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

nextLong

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

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

Возвращает:
сканированное из входного потока значение типа long
Исключения:
InputMismatchException - если следующий токен не соответствует регулярному выражению Целое число или находится вне диапазона
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.

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

hasNextFloat

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

nextFloat

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

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

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

hasNextDouble

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

nextDouble

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

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

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

hasNextBigInteger

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

hasNextBigInteger

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

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

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

nextBigInteger

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

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

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

nextBigInteger

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

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

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

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

hasNextBigDecimal

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

nextBigDecimal

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

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

Возвращает:
сканированное значение типа BigDecimal из входных данных
Исключение:
InputMismatchException - если следующий токен не соответствует регулярному выражению Decimal, или находится вне допустимого диапазона
NoSuchElementException - если входные данные исчерпаны
IllegalStateException - если этот сканер закрыт

reset

public Scanner reset()
Сбрасывает этот сканер.

Сброс сканера отбрасывает всю его явную информацию состояния, которая могла быть изменена вызовами useDelimiter(), useLocale() или useRadix().

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


   scanner.useDelimiter("\\p{javaWhitespace}+")
          .useLocale(Locale.getDefault(Locale.Category.FORMAT))
          .useRadix(10);
 
Возвращает:
эту строку сканера
С момента:
1.6

tokens

public Stream<String> tokens()
Возвращает поток разделителем разделяемых токенов из этого сканера. Поток содержит те же токены, которые были бы возвращены, начиная от текущего состояния этого сканера, вызовом метода next() повторно до тех пор, пока метод hasNext() не вернёт false.

Полученный поток последовательный и упорядоченный. Все элементы потока не равны null.

Сканирование начинается при инициализации конечной операции потока, используя текущее состояние этого сканера. Последующие вызовы любых методов этого сканера, кроме close() и ioException(), могут вернуть неопределённые результаты или могут вызвать неопределённые эффекты на возвращаемый поток. Источник возвращаемого потока Spliterator является быстродействующим и будет, по возможности, выбросить ConcurrentModificationException, если такие вызовы будут обнаружены во время выполнения потоковой обработки.

После завершения выполнения потоковой обработки этот сканер остается в неопределённом состоянии и не может быть повторно использован.

Если этот сканер содержит ресурс, который необходимо освободить, этот сканер должен быть закрыт, либо вызвав его метод close(), либо закрыв возвращаемый поток. Закрытие потока закроет подлежащий сканер. IllegalStateException выбрасывается, если сканер был закрыт, когда этот метод был вызван, или если этот сканер закрыт во время выполнения потоковой обработки.

Этот метод может блокироваться, ожидая большего ввода.

Примечание API:
Например, следующий код создаст список токенов, разделённых запятыми, из строки:

 List<String> result = new Scanner("abc,def,,ghi")
     .useDelimiter(",")
     .tokens()
     .collect(Collectors.toList());
 

Результат будет содержать "abc", "def", пустую строку и "ghi".

Возвращает:
последовательный поток строковых токенов
Исключение:
IllegalStateException - если этот сканер закрыт
С момента:
9

findAll

public Stream<MatchResult> findAll(Pattern pattern)
Возвращает поток результатов совпадения из этого сканера. Поток содержит те же результаты в том же порядке, который был бы возвращён вызовом findWithinHorizon(pattern, 0) и затем match() последовательно, до тех пор, пока findWithinHorizon() находит совпадения.

Полученный поток последовательный и упорядоченный. Все элементы потока не равны null.

Сканирование начинается при инициализации терминальной операции потока, используя текущее состояние этого сканера. Последующие вызовы любых методов этого сканера, кроме close() и ioException(), могут возвращать неопределённые результаты или вызывать неопределённые эффекты на возвращённый поток. Источник возвращённого потока Spliterator является fail-fast и, с наилучшим результатом, бросит исключение ConcurrentModificationException, если будут обнаружены такие вызовы во время выполнения потоковой обработки.

После завершения потоковой обработки этот сканер остаётся в неопределённом состоянии и не может быть повторно использован.

Если этот сканер содержит ресурс, который необходимо освободить, этот сканер должен быть закрыт, либо вызвав его метод close(), либо закрыв возвращённый поток. Закрытие потока закроет сканер. IllegalStateException будет брошено, если сканер был закрыт при вызове этого метода или если этот сканер закрыт во время выполнения потоковой обработки.

Как и в методах findWithinHorizon(), этот метод может блокироваться, ожидая дополнительных входных данных, и может буферизовать неограниченное количество входных данных, в поисках совпадения.

API Note:
Например, следующий код прочитает файл и вернёт список всех последовательностей символов, состоящих из семи или более заглавных латинских букв:

 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());
 }
 
Parameters:
pattern - шаблон для поиска совпадений
Returns:
последовательный поток результатов совпадений
Throws:
NullPointerException - если шаблон null
IllegalStateException - если этот сканер закрыт
Since:
9

findAll

public Stream<MatchResult> findAll(String patString)
Возвращает поток результатов совпадений, которые соответствуют указанной строке шаблона. Эффект эквивалентен следующему коду:

     scanner.findAll(Pattern.compile(patString))
 
Parameters:
patString - строка шаблона
Returns:
последовательный поток результатов совпадений
Throws:
NullPointerException - если patString null
IllegalStateException - если этот сканер закрыт
PatternSyntaxException - если синтаксис регулярного выражения некорректен
Since:
9
See Also:
  • Pattern

© 1993, 2023, 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/21/docs/api/java.base/java/util/Scanner.html

Spec-Zone.ru

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