您的位置:首页 > 编程语言 > Java开发

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

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

}

}

这种方法是很麻烦的,不仅要获取系统的输入流,还要转换成字符流,并且还要进行异常的捕获,所以到后来JDK1.5推出一种新的较为简单的方法:

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类型等

}

}

这种方法之所以简单是因为Scanner进行了更高层次的封装,比如在Scanner内部就已经处理了异常
在JDK6.0出现后,又多了一种新的方法,那就是利用java.io.Console类来实现

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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: