В Java существует три способа считывания входных данных с консоли:
- Система.консоль (JDK 1.6)
- Сканер (JDK 1.5)
- Буферизованный считыватель + считыватель входного потока (классический)
1. Буферизованный считыватель + считыватель входного потока (классический)
Начиная с JDK 1.6, разработчик начинает переходить на более простой и мощный java.io . Консоль
класс.
package com.mkyong.io; import java.io.Console; public class JavaConsole { public static void main(String[] args) { Console console = System.console(); String input = ""; while (!"q".equalsIgnoreCase(input)) { System.out.print("Enter something (q to quite): "); input = console.readLine(); System.out.println("input : " + input); } System.out.println("bye bye!"); } }
System.console()
вернет значение null в IDE, запустив класс в консоли или терминале вручную.
~/projects/target/classes$ java com.mkyong.io.JavaConsole Enter something (q to quite): hello 123 input : hello 123 Enter something (q to quite): hello Java input : hello Java Enter something (q to quite): mkyong input : mkyong Enter something (q to quite): q input : q bye bye!
P.S Больше Система Java.консоль() примеры.
2. Сканер
До JDK 1.6 это Сканер
способ считывания ввода с консоли.
package com.mkyong.io; import java.util.Scanner; public class JavaScanner { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input = ""; while (!"q".equalsIgnoreCase(input)) { System.out.print("Enter something (q to quite): "); input = scanner.nextLine(); System.out.println("input : " + input); } System.out.println("bye bye!"); } }
Enter something (q to quite): hello mkyong input : hello mkyong Enter something (q to quite): jdk 1.5 input : jdk 1.5 Enter something (q to quite): exit input : exit Enter something (q to quite): q input : q bye bye!
P.S Больше Примеры сканера Java примеры.
3. Буферизованный считыватель + считыватель входного потока
В старые времена, в JDK 1.1, мы использовали BufferedReader + InputStreamReader
для чтения входных данных с консоли.
package com.mkyong.io; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class JavaBufferedReaderClassic { public static void main(String[] args) { BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); String input = ""; while (!"q".equalsIgnoreCase(input)) { System.out.print("Enter something (q to quite): "); input = br.readLine(); System.out.println("input : " + input); } System.out.println("bye bye!"); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
JDK 1.7 попробуйте с помощью ресурсов
package com.mkyong.io; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class JavaBufferedReader { public static void main(String[] args) { // jdk 1.7 try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { String input = ""; while (!"q".equalsIgnoreCase(input)) { System.out.print("Enter something (q to quite): "); input = br.readLine(); System.out.println("input : " + input); } System.out.println("bye bye!"); } catch (IOException e) { e.printStackTrace(); } } }
Рекомендации
- Консольный JavaDoc
- Сканер JavaDoc
- Ява – Как считывать входные данные из System.console()
- Ява – Как считывать ввод с консоли с помощью сканера
- Примеры сканера Java
- Пример Java 7 с использованием ресурсов
Оригинал: “https://mkyong.com/java/how-to-read-input-from-console-java/”