黑马程序员技术交流社区
标题:
关于 输入的问题
[打印本页]
作者:
刘泰
时间:
2012-3-27 19:59
标题:
关于 输入的问题
在java中输入有二种方式:
1:用BufferedReader
BufferedReader br = new BufferedReader(new Inputstream(System.in));
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
创建了一个BufferedReader对象, 名字是br , 然后new, 传入了一个InputStream对象.因为使用了BufferedReader的构造方法,
BufferedReader是缓冲流, INputStream是字节流
可以想象成一个水管, 在INputStream外面包了一层, 以供读取方便, 就简单理解成, InputStream这个水管一下只能有一滴水从这里通过, 而BufferedReader套在这个水管上, 就可以一下读一串水流
system.in 是放到标准的键盘设备上
2:用Scanner
Scanner input = new Scanner(System.in);
String str = input.nextLine();//还可以用别的方法来获取,int,char,double
System.in 和使用Bufferedreader一样。
我想请问一下,这二个有什么区别,在什么样的情况下,用什么样的输入方式好呢?
作者:
周四川
时间:
2012-3-27 20:08
BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
Scanner一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
作者:
鲍亚坤
时间:
2012-3-27 20:12
BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。
Scanner取得输入数据的依据是空格符:如按下空格键,Tab键或者Enter键,Scanner就会返回下一个输入。所以说Scanner不能输入空格,如果你希望取得含有空格的字符串BufferedReader可以做到。
作者:
肖发腾
时间:
2012-3-27 20:23
我查阅了下API文档,
Scanner input = new Scanner(System.in);
String str = input.nextLine();
String str = input.nextInt(); 这句读入的是下一个int型数据,即可以指定读入的是什么类型的数据,读入的是一个还是一行等等,
如果通过键盘输入的不是,则会发生异常。
回过来看第一种:
BufferedReader br = new BufferedReader(new Inputstream(System.in));
这里就没有指定了。
这是两者的一个区别吧。
本人理解,不知对否
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2