コンソールから入力を読み込む方法 - Java

コンソールから入力を読み取る方法– Java

Javaでは、コンソールから入力を読み取る3つの方法があります。

  1. BufferedReader + InputStreamReader(クラシック)

  2. スキャナー(JDK 1.5)

  3. System.console (JDK 1.6)

1. BufferedReader + InputStreamReader

経験豊富なJava開発者にとって、システム入力を読み取るこの古典的な方法を見逃すことになります。

ReadConsole.java

package com.example;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ReadConsole {

    public static void main(String[] args) {

        BufferedReader br = null;

        try {

            br = new BufferedReader(new InputStreamReader(System.in));

            while (true) {

                System.out.print("Enter something : ");
                String input = br.readLine();

                if ("q".equals(input)) {
                    System.out.println("Exit!");
                    System.exit(0);
                }

                System.out.println("input : " + input);
                System.out.println("-----------\n");
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}

出力

Enter something : old and classic
input : old and classic
-----------

Enter something : q
Exit!

2. スキャナー

JDK 1.5では、開発者はjava.util.Scannerを使用してシステム入力を読み取り始めます。

ReadConsole2.java

package com.example;

public class ReadConsole2 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        while (true) {

            System.out.print("Enter something : ");
            String input = scanner.nextLine();

            if ("q".equals(input)) {
                System.out.println("Exit!");
                break;
            }

            System.out.println("input : " + input);
            System.out.println("-----------\n");
        }

        scanner.close();

    }

}

出力

Enter something : hello jdk 1.5
input : hello jdk 1.5
-----------

Enter something : scanner example
input : scanner example
-----------

Enter something : q
Exit!

3. System.console

JDK 1.6では、開発者はより単純で強力なjava.io.Consoleクラスへの切り替えを開始します。

ReadConsole3.java

package com.example;

public class ReadConsole3 {

    public static void main(String[] args) {

        while (true) {

            System.out.print("Enter something : ");
            String input = System.console().readLine();

            if ("q".equals(input)) {
                System.out.println("Exit!");
                System.exit(0);
            }

            System.out.println("input : " + input);
            System.out.println("-----------\n");
        }

    }

}

出力

Enter something : hello jdk 1.6
input : hello jdk 1.6
-----------

Enter something : console example
input : cosole example
-----------

Enter something : q
Exit!

Note
このSystem.console()は、IDEの外部でのみ使用でき、テストには少し困難です。