Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Класс Scanner

Класс Scanner упрощает разбор строки из потока ввода, позволяя обойтись без классов BufferedReader, InputStreamReader. В качестве входных объектов можно использовать File, InputStream, String, Readable. В учебных примерах часто используют System.in в качестве приёма данных от настольной клавиатуры, что не слишком актуально для Android.

Метод next() возвращает следующую лексему String, также существуют методы для примитивных типов, например, nextInt(). Метод выполняется в блокирующем режиме. Также существуют соответствующие методы hasNext(), которые возвращают true, если следующая лексема относится к правильному типу.

По умолчанию входные данные разбиваются по пробелам между словами. Можно задать собственный разделитель в форме регулярного выражения в методе useDelimiter().

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


Scanner scanner = new Scanner("Кот Васька 28 Москва");
while (scanner.hasNext()) {
    System.out.println(scanner.next());
}

// Ответ
I/System.out: Кот
I/System.out: Васька
I/System.out: 28
I/System.out: Москва

Получим число.


Scanner scanner = new Scanner("27");
System.out.println(scanner.nextInt()); // 27
Реклама