黑马程序员技术交流社区

标题: 同样是从控制台得到数据 那它们有什么区别呢? [打印本页]

作者: 白潇    时间: 2012-4-15 00:53
标题: 同样是从控制台得到数据 那它们有什么区别呢?
我知道 BufferedReader 是字符输入流 又叫缓冲字符流 对String的控制可以提高效率  它可以从控制台得到数据
但 Sacnner也可以 从控制台得到数据 BufferedReader 是io流 所以要java.io.* 而Sacnner是java.util.Scanner
它们有什么区别呢 ? 请简要说明一下 什么情况用那个更好
作者: 栗学魁    时间: 2012-4-15 01:13
bufferedReader是字符输入流,(不能读入基本类型值)

Scanner是一个用正则表达式
处理过的留,可以读入基本类型值
作者: 刘占月    时间: 2012-4-15 07:57
Sacnner是jdk1.6 才涉及到得数据类型,Sacnner通过用System.in 作为它的参数,从而对用户输入的内容进行处理。
如下:
             Scanner scan = new Scanner(System.in);
             System.out.println("请输入一个字符串:");
             System.out.println("您输入的字符串是:" + scan.next());
说实话Scanner也挺方便的,但有好处就有弊处
Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键.当按下这其中的任一键 时,Scanner就会返回下一个输入.
所以当你输入的内容中间包括空格时,可是就得考虑使用BufferedReade了。r
BufferedReade是个固定格式,只要你记住就没问题了。
  BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));

作者: 刘占月    时间: 2012-4-15 07:59
额 , 不好意思,写错了  Sacnner是jdk1.5 开始的
作者: 马强    时间: 2012-4-15 08:30
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
另一个从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
Scanner(Readable source)                //从构造方法上看,scanner可以传的参数更广泛一些。
BufferedReader(Reader in, int sz)

欢迎楼下补充。
作者: 王德南    时间: 2012-4-15 08:44
用Scanner获得用户的输入非常的方便,但是Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键.当按下这其中的任一键时,Scanner就会返回下一个输入. 当你输入的内容中间包括空格时,显然,使用Scanner就不能完整的获得你输入的字符串.
使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常(Exception).
使用BufferedReader来取得输入使用这个方法是固定的,每次使用前先如法炮制就可以了.
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
String test = buffer.readLine();
readLine()方法会返回用户在按下Enter键之前的所有字符输入,不包括最后按下的Enter返回字符




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2