三种Java从控制台读数据方法
来源:互联网 发布:淘宝买家下订单骗卖家 编辑:程序博客网 时间:2024/04/29 17:08
主程序都一样,调用readString()方法,下面介绍3种不同的readSrting
public static void main(String[] args) { String str = readString("请输入字符串:"); System.out.println("readString 方法的输入:" + str); }
方法一
JDK 1.4 及以下的版本中要想从控制台中输入数据只有一种办法,即使用System.in 获得系统的输入流,再桥接至字符流从字符流中读入数据。示例代码如下:
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; }
采用了BufferedReader 类来进行处理,而且在读取的过程中还需要捕获IOException 。不过这是 JDK 1.4 及以下版本中从控制台读取数据唯一的办法,比较麻烦,不推荐使用。
方法二
从 JDK 5.0 开始,基本类库中增加了java.util.Scanner 类,根据它的 API 文档说明,这个类是采用正则表达式进行基本类型和字符串分析的文本扫描器。使用它的Scanner(InputStream source) 构造方法,可以传入系统的输入流System.in 而从控制台中读取数据。
private static String readString5(String prompt) { Scanner scanner = new Scanner(System.in); System.out.print(prompt); return scanner.nextLine(); }
从代码量上来看,Test3 比Test1 少了很多的代码,核心代码只有两行。其实并不是Scanner 将控制台输入给简单化了,只是在其内部的实现中已经将IOException 处理了,而且采用InputStreamReader 来一个字符一个字符进行扫描读取的(嘿嘿,它本身就是个扫描器),只是Scanner 做了更高层次的封装。
Scanner 不仅可以从控制台中读取字符串,还可以读取除char 之外的其他七种基本类型和两个大数字类型,并不需要显式地进行手工转换。Scanner 不单单只能扫描控制台中输入的字符,它还可以让读入的字符串匹配一定的正则表达式模式,如果不匹配时将抛出InputMismatchException 异常。
使用System.in 作为它的构造参数时,它只扫描了系统输入流中的字符。它还有其他的构造,分别可以从文件或者是字符串中扫描分析字符串的,具体的使用方法可以参考 API 文档说明。
方法三
从 JDK 6.0 开始,基本类库中增加了java.io.Console 类,用于获得与当前 Java 虚拟机关联的基于字符的控制台设备。在纯字符的控制台界面下,可以更加方便地读取数据。示例代码如下:
在Test1 和Test3 中,输入数据前的提示信息需要使用System.out.print(); 来输出,但是使用基于Console 的Test4 类,可以在方法参数中直接放入提示信息。private static String readString6(String prompt) { Console console = System.console(); if (console == null) { throw new IllegalStateException("不能使用控制台"); } return console.readLine(prompt); } }
总的来说:
JRE 1.4 或以下版本的情况下,没得选择只能采用Test1 或者是非控制台读入的Test2 的方法。
JRE 5.0 的情况下,建议使用基于Scanner 的Test3 的方法,更方便地进行数据读取。
JRE 6.0 的情况,并且只在字符界面的控制台下运行时,采用Test4 的方法,如果需要读入像密码之类的敏感数据,为了安全性考虑也必须使用Test4 或者是自行实现。如果需要读入除字符串类型之外的其他数据类型,建议使用基于Scanner 的控制台输入。
- 三种Java从控制台读数据方法
- JAVA从控制台读数据的几种方法
- java中从控制台读取输入的三种方法
- 从文件中读数据并显示到控制台
- Java 读数据文件方法
- 从文件读数据
- java如何从properties配置文件里面读数据?
- java从excle表中读数据(jxl)
- java 从txt读数据 往excel写数据
- Java 从键盘读入 控制台输出的两种方法
- Java从控制台读入数据的几种方法
- 【引用】Java从控制台读入数据的几种方法
- java怎么从控制台输入的几种方法
- Java从控制台获取输入的两种方法
- c# 从XML读数据
- pb从excel读数据
- 从xml文件读数据
- python从文件读数据
- 浅谈c中函数参数入栈顺序
- grub rescue 的修复
- 两个小时精通Android开发之界面篇
- 两个小时精通Android开发之按键映射篇
- c# 获取命名空间 类名 方法名
- 三种Java从控制台读数据方法
- 查看程序安装路径
- 两个小时精通Android开发之数据持久存储篇
- Cult3D基础教程——9.模型优化
- Java多线程编程总结笔记——四创建与启动
- 把JS和CSS合并到1个文件
- MTK一套代码多项目实现
- JPA
- WP7里面的MD5加密