Java中從控制檯讀取輸入的方法的總結

這兩天在做算法題的時候,老是要求從控制檯讀取輸入作爲函數的參數來運行程序,所以特地總結了一下Java從控制檯讀取輸入的方法。如下;

在較早的版本中,Java只能以一種方式讀取控制檯的輸入,並且有點麻煩,那就是用System.in獲取系統的輸入流,再橋接到字符流用字符流來獲取輸入的內容

  1. import java.io.IOException;  
  2. import java.io.InputStreamReader;  
  3. public class Test1 {  
  4. public static void main(String[] args) {  
  5. String str = readString(“請輸入字符串:“);  
  6. System.out.println(”readString 方法的輸入:“ + str);  
  7. }  
  8. /**  
  9. * 使用系統的輸入流,從控制檯中讀取數據<br/>  
  10. * 用於所用的JDK版本  
  11. * @param prompt 提示信息  
  12. * @return 輸入的字符串  
  13. */ 
  14. private static String readString(String prompt) {  
  15. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
  16. string str = null;  
  17. try {  
  18. System.out.print(prompt);  
  19. str = br.readLine();  
  20. catch (IOException e) {  
  21. e.printStackTrace();  
  22. }  
  23. return str;  
  24. }  
這種方法是很麻煩的,不僅要獲取系統的輸入流,還要轉換成字符流,並且還要進行異常的捕獲,所以到後來JDK1.5推出一種新的較爲簡單的方法:
  1. import java.util.Scanner;  
  2. public class Test3 {  
  3. public static void main(String[] args) {  
  4. String str = readString5(”請輸入字符串:“);  
  5. System.out.println(”readString5 方法的輸入:“ + str);  
  6. }  
  7. /**  
  8. * 使用掃描器類(Scanner)從控制檯中讀取字符串<br/>  
  9. * 適用於JDK 5.0及以後的版本  
  10. * @param prompt 提示信息  
  11. * @return 輸入的字符串  
  12. */ 
  13. private static String readString5(String prompt) {  
  14. Scanner scanner = new Scanner(System.in);  
  15. System.out.print(prompt);  
  16. return scanner.nextLine();  //這種方法可以讀取多種數據類型的數據,比如使用nextInt讀取Int類型,使用nextFlost讀取flost類型等
  17. }  
  18. }

這種方法之所以簡單是因爲Scanner進行了更高層次的封裝,比如在Scanner內部就已經處理了異常
在JDK6.0出現後,又多了一種新的方法,那就是利用java.io.Console類來實現
  1. import java.io.Console;  
  2. import java.util.Scanner;  
  3. public class Test4 {  
  4. public static void main(String[] args) {  
  5. String str = readString6(”請輸入字符串:“);  
  6. System.out.println(”readString6 方法的輸入:“ + str);  
  7. }  
  8. /**  
  9. * 使用控制檯類(Console)從控制檯中讀取字符串<br/>  
  10. * 適用於JDK 1.6或以後的版本  
  11. * @param prompt 提示信息  
  12. * @return 輸入的字符串  
  13. */ 
  14. private static String readString6(String prompt) {  
  15. Console console = System.console();  
  16. if (console == null) {  
  17. throw new IllegalStateException(”不能使用控制檯“);  
  18. }  
  19. return console.readLine(prompt);  
  20. }  



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章