Рассмотрим подробно класс Scanner, хотя им уже многократно пользовались для ввода данных. Он предназначен для извлечения информации практически из любых источников.
Scanner разбивает входные данные на токены (лексемы), используя шаблон разделителя, который по умолчанию соответствует пробелу. Полученные токены могут быть затем преобразованы в значения различных типов с использованием различных next-методов.
Некоторые конструкторы класса:
Scanner(String source)
Scanner(InputStream source)
Scanner(InputStream source, String charsetName)
Scanner(InputStream source, Charset charset)
Scanner(File source)
Scanner(File source, String charsetName)
Scanner(File source, Charset charset)
Scanner(Readable source)
Scanner(Path source)
Scanner(Path source, String charset)
Scanner(Path source, Charset charset)
где source - источник входных данных, charset - кодировка источника, а charsetName тип кодировки, используемый для преобразования байтов из потока в символы для сканирования.
Объект класса Scanner читает наборы символов (токены или лексемы) с набором разделителей из источника, указанного в конструкторе.
«По умолчанию» набором разделителей являются пробельные символы, а для строк – символ перевода на следующую строку.
Формат создания объекта класса Scanner:
Scanner ОбъектСканера = new Scanner(ИницОбъект);
Пример.
Scanner console = new Scanner(System.in);
Scanner поддерживает чтение токенов типа String, всех примитивных типов языка Java (кроме char), а также BigInteger и BigDecimal. Кроме того, числовые значения могут использовать разделители тысяч. Таким образом, в US-локали будет правильно читается строка "1 237 712" как представляющая целочисленное значение.
Методов у класса Scanner очень много, но можно по частоте использования в учебных программах выделить следующие две группы методов.
Первую группу составляют методы, сначала пропускающие все входные данные, соответствующие шаблону разделителя, а затем считывающие очередной токен из потока или объекта ИницОбъект, с которым связан объект сканера ОбъектСканера, и преобразующие его в данное определенного типа:
nextLine() – метод считывает и возвращает оставшуюся часть текущей строки из ИницОбъект, не включая разделитель строк в конце. Позиция устанавливается в начале следующей строки;
Достарыңызбен бөлісу: |