コンソールから入力を読み取る方法– Java
Javaでは、コンソールから入力を読み取る3つの方法があります。
-
BufferedReader + InputStreamReader(クラシック)
-
スキャナー(JDK 1.5)
-
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の外部でのみ使用でき、テストには少し困難です。