I/O · Урок 8/9
89%
⏱ 10–15 min

Использование класса Scanner в Java

Объект класса java.util.Scanner упрощает разбор строки из потока ввода. При вводе могут использоваться данные из консоли, файла, строки или любого другого источника, реализующего интерфейсы Readable или ReadableByteChannel.

Хотя Scanner и не является потоком, у него тоже обязательно вызывать метод close(), который закроет используемый основной источник.

Пример 1. Использование класса Scanner

public class ScannerExample {
    private static String fileName = "scan.txt";

    public static void scanFile() {
        try (FileReader fileReader = new FileReader(fileName);
             Scanner scanner = new Scanner(fileReader)) {
            while (scanner.hasNext()) {
                if (scanner.hasNextInt()) {
                    System.out.println(scanner.nextInt() + " :int");
                } else if (scanner.hasNextDouble()) {
                    System.out.println(scanner.nextDouble() + " :double");
                } else if (scanner.hasNextBoolean()) {
                    System.out.println(scanner.nextBoolean() + " :boolean");
                } else {
                    System.out.println(scanner.next() + " :String");
                }
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

    public static void makeFile() {
        try (FileWriter fileWriter = new FileWriter(fileName)) {
            fileWriter.write("2 Java 1,5 true 1.6 ");
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

    public static void main(String[] args) {
        ScannerExample.makeFile();
        ScannerExample.scanFile();
    }
}

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

public class ScannerDelimiterExample {
    public static void main(String[] args) {
        double sum = 0.0, number;
        Scanner scanner = new Scanner("1,3;2,0; 8,5; 4,8; 9,0; 1; 10; abc");
        scanner.useDelimiter(";\\s*");
        while (scanner.hasNext()) {
            if (scanner.hasNextDouble()) {
                number = scanner.nextDouble();
                System.out.println("Число:" + number);
                sum += number;
            } else {
                System.out.println("Строка: " + scanner.next());
            }
        }
        System.out.println("Сумма чисел = " + sum);
    }
}

Java программирование

1. Введение в Java
2. Запуск Java
3. Синтаксис Java
4. Операторы Java
5. Условия и циклы
6. Массивы
7. Алгоритмы
8. ООП
9. static
10. Object
11. Интерфейсы, enum
12. Wrapper классы
13. String
14. Localization& Internationalization
15. Date & Time
16. Generics
17. Lambda
18. Коллекции
19. Stream API
20. Исключения
21. I/O
22. Reflection & JavaDoc
23. Сериализация
24. Maven
25. SQL
26. JDBC
27. Многопоточность
28. Git и GitHub
‹ Предыдущий урок Следующий урок ›