Java中从控制台读取输入的方法的总结

来源:互联网 发布:电路仿真软件哪种好 编辑:程序博客网 时间:2024/04/30 00:06

这两天在做算法题的时候,老是要求从控制台读取输入作为函数的参数来运行程序,所以特地总结了一下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. }  



0 0
原创粉丝点击