(第3讲)Java如何获得用户在控制台输入的东西(Scanner和BufferedReader的区别)
2016-03-25 23:09
686 查看
第三讲
首先声明一下,这是我自己 的一个学习过程,只是想要记录下来,如果有错误还请各位大神指出,谢谢啦
你们有没有遇到过想要自己指定一个变量的大小,或者数组的大小?经过总结,有两种方法,但是各自有什么区别联系还不是很清楚,望大神们能够指点一下。十分感谢。
1、 InputStreamReader m=new InputStreamReader(System.in);
BufferedReader n=new BufferedReader(m);
System.out.println("请输入");
//获取用户输入的文本行
String name=n.readLine();//此时会抛出异常,要进行处理,第一种处理抛出异常,第二种处理try catch
System.out.println(name);
结果是: 请输入
13324sdgdzdga啥地方睡得着
13324sdgdzdga啥地方睡得着
2、
System.out.println("请输入");
Scanner k=new Scanner(System.in);
String l=k.nextLine();
int o=k.nextInt();
float p=k.nextFloat();
double q=k.nextDouble();
byte s=k.nextByte();
3、Scanner和BufferedReader区别
通俗地讲Scanner是直接往硬盘里写数据,而BufferedReader是先把数据读到缓存区然后再写进硬盘里的。BufferedReader的效率比Scanner的高。BufferedReader是字符输入流,不能读入基本类型值;然而Scanner是一个用正则表达式处理过的流,可以读入基本类型值。
Scanner一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器;是控制台应用程序最为常用的文本输入方式。 Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。所以说Scanner不能输入空格,如果你希望取得含有空格的字符串BufferedReader可以做到。
BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取;速度要比Scanner快。BufferedReader 可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
4、分别什么时候会用Scanner,什么时候使用BufferedReader呢?
简单的说就是希望获得基本数据类型的时候用Scanner;希望获得完整的字符串的时候(尤其是包含有空白字符的时候)用BufferedReader。
使用Scanner来取得使用者的输入很方便,但是它以空白来区隔每一个输入字串,在某些时候并不适用,因为使用者可能输入一个字串,中间会包括空白字元,而您希望取得完整的字串。这是就要用BufferedReader,他是Java.io套件中的一个类别,所以用这个的时候要引入包(
import java.io.BufferedReader; import java.io.InputStreamReader;),它是以回车符来结束输入的;并且使用BufferedReader物件的readLine()方法必须处理IOException例外(exception),例外处理机制是Java提供给程式设计人员捕捉程式中可能发生的错误所提供的机制。
首先声明一下,这是我自己 的一个学习过程,只是想要记录下来,如果有错误还请各位大神指出,谢谢啦
你们有没有遇到过想要自己指定一个变量的大小,或者数组的大小?经过总结,有两种方法,但是各自有什么区别联系还不是很清楚,望大神们能够指点一下。十分感谢。
1、 InputStreamReader m=new InputStreamReader(System.in);
BufferedReader n=new BufferedReader(m);
System.out.println("请输入");
//获取用户输入的文本行
String name=n.readLine();//此时会抛出异常,要进行处理,第一种处理抛出异常,第二种处理try catch
System.out.println(name);
结果是: 请输入
13324sdgdzdga啥地方睡得着
13324sdgdzdga啥地方睡得着
2、
System.out.println("请输入");
Scanner k=new Scanner(System.in);
String l=k.nextLine();
int o=k.nextInt();
float p=k.nextFloat();
double q=k.nextDouble();
byte s=k.nextByte();
3、Scanner和BufferedReader区别
通俗地讲Scanner是直接往硬盘里写数据,而BufferedReader是先把数据读到缓存区然后再写进硬盘里的。BufferedReader的效率比Scanner的高。BufferedReader是字符输入流,不能读入基本类型值;然而Scanner是一个用正则表达式处理过的流,可以读入基本类型值。
Scanner一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器;是控制台应用程序最为常用的文本输入方式。 Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。所以说Scanner不能输入空格,如果你希望取得含有空格的字符串BufferedReader可以做到。
BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取;速度要比Scanner快。BufferedReader 可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
4、分别什么时候会用Scanner,什么时候使用BufferedReader呢?
简单的说就是希望获得基本数据类型的时候用Scanner;希望获得完整的字符串的时候(尤其是包含有空白字符的时候)用BufferedReader。
使用Scanner来取得使用者的输入很方便,但是它以空白来区隔每一个输入字串,在某些时候并不适用,因为使用者可能输入一个字串,中间会包括空白字元,而您希望取得完整的字串。这是就要用BufferedReader,他是Java.io套件中的一个类别,所以用这个的时候要引入包(
import java.io.BufferedReader; import java.io.InputStreamReader;),它是以回车符来结束输入的;并且使用BufferedReader物件的readLine()方法必须处理IOException例外(exception),例外处理机制是Java提供给程式设计人员捕捉程式中可能发生的错误所提供的机制。
相关文章推荐
- 开发JavaScript组件
- Nodejs中的this
- jQuery组件开发
- caffe源码理解之layer
- 前端JS
- JSON-Linking data
- 如何把一个包含features和plugins的folder 变成一个Maven Tycho支持的 P2仓库?
- ExtJs之Ext.view.View
- iOS xml文件的解析方式 XMLDictionary,GDataXMLNode,NSXMLParser 转发自徒步天涯
- Trick(十五)—— 树结构如何判断一个节点是内部节点(internal node)还是叶子节点(leaf node)
- iOS xml文件的解析方式 XMLDictionary,GDataXMLNode,NSXMLParser
- js中使用EL表达式
- (三)JavaScript之[事件]与[字符串]
- HTML5与CSS3基础(二)
- HTML5与CSS3基础(一)
- JavaScript中多位数相加处理方法
- PLM(Product Lifecycle Management)System
- CSS字体
- CSS3秘笈第三版涵盖HTML5学习笔记9~12章
- CSS之文本