So lesen Sie Eingaben von der Konsole aus - Java

Lesen von Eingaben von der Konsole - Java

In Java gibt es drei Möglichkeiten, Eingaben von einer Konsole zu lesen:

  1. BufferedReader + InputStreamReader (Classic)

  2. Scanner (JDK 1.5)

  3. System.console (JDK 1.6)

1. BufferedReader + InputStreamReader

Für erfahrene Java-Entwickler wird diese klassische Methode zum Lesen einer Systemeingabe fehlen.

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();
                }
            }
        }

    }

}

Ausgabe

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

Enter something : q
Exit!

2. Scanner

In JDK 1.5 beginnt der Entwickler,java.util.Scanner zum Lesen von Systemeingaben zu verwenden.

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();

    }

}

Ausgabe

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

In JDK 1.6 beginnt der Entwickler, zur einfacheren und leistungsfähigerenjava.io.Console-Klasse zu wechseln.

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");
        }

    }

}

Ausgabe

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

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

Enter something : q
Exit!

Note
DiesesSystem.console() kann nur außerhalb der IDE verwendet werden, was für Tests etwas schwierig ist.