Как читать ввод с консоли - 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, что немного сложно для тестирования.