這兩天在做算法題的時候,老是要求從控制檯讀取輸入作爲函數的參數來運行程序,所以特地總結了一下Java從控制檯讀取輸入的方法。如下;
在較早的版本中,Java只能以一種方式讀取控制檯的輸入,並且有點麻煩,那就是用System.in獲取系統的輸入流,再橋接到字符流用字符流來獲取輸入的內容
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class Test1 {
- public static void main(String[] args) {
- String str = readString(“請輸入字符串:“);
- System.out.println(”readString 方法的輸入:“ + str);
- }
- /**
- * 使用系統的輸入流,從控制檯中讀取數據<br/>
- * 用於所用的JDK版本
- * @param prompt 提示信息
- * @return 輸入的字符串
- */
- private static String readString(String prompt) {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- string str = null;
- try {
- System.out.print(prompt);
- str = br.readLine();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return str;
- }
- }
- import java.util.Scanner;
- public class Test3 {
- public static void main(String[] args) {
- String str = readString5(”請輸入字符串:“);
- System.out.println(”readString5 方法的輸入:“ + str);
- }
- /**
- * 使用掃描器類(Scanner)從控制檯中讀取字符串<br/>
- * 適用於JDK 5.0及以後的版本
- * @param prompt 提示信息
- * @return 輸入的字符串
- */
- private static String readString5(String prompt) {
- Scanner scanner = new Scanner(System.in);
- System.out.print(prompt);
- return scanner.nextLine(); //這種方法可以讀取多種數據類型的數據,比如使用nextInt讀取Int類型,使用nextFlost讀取flost類型等
- }
- }
- import java.io.Console;
- import java.util.Scanner;
- public class Test4 {
- public static void main(String[] args) {
- String str = readString6(”請輸入字符串:“);
- System.out.println(”readString6 方法的輸入:“ + str);
- }
- /**
- * 使用控制檯類(Console)從控制檯中讀取字符串<br/>
- * 適用於JDK 1.6或以後的版本
- * @param prompt 提示信息
- * @return 輸入的字符串
- */
- private static String readString6(String prompt) {
- Console console = System.console();
- if (console == null) {
- throw new IllegalStateException(”不能使用控制檯“);
- }
- return console.readLine(prompt);
- }
- }