Использование класса 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);
    }
}
Читайте также:
Trustpilot
Trustpilot
Комментарии