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

Author: Tatyana Milkina

Объект класса 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);
    }
}
Read also:
Comments