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