BufferReader与Scanner的用法比较

/**
    	 * BufferReader与Scanner的区别进行比较
    	 * Scanner 需要传入System.in作为参数,这个我们可以看作是通过其内部机制将System.in包装起来
    	 * 而实现数据的读取工作,Scanner对象通过一系列的in.nextXxx();方法来读取相应的基本类型的数据
    	 * 然而,Scanner读取数据是按空格符,Tab键,Enter键。只要遇到其中之一,Scanner的方法就会返回
    	 * 下一个输入。如果我们的数据有空格,我们就不会得到我们想要的数据,这样我们就要考虑到BufferReader
    	 * 来读取数据啦。BufferReader读取数据比较固定,这样格式也就相对来说比较单一,读取数据的方法如下:
    	 * BufferReader br=new BufferReader(new InputStreamReader(System.in))
    	 * z这个BufferReader对象通过readline()方法来读取数据,readLine()是按Enter回车来读取
    	 * 一行数据的,只要在回车键之前的都会被readLine();方法返回。
    	 */
public class MyLog{
 public static void main(String[] args) throws IOException{

    	String str;
    	int a;
    	//字符流读取键盘上的数据
    	BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        try {
        	//由于br是一个字符一个字符进行读取的,如果用read()的话,当你输入23时,一个read()只能读2,3还需要一个read()才能读取
        	//所以对此处理只能用readLine,读取一行,再进行转换的办法
			str=br.readLine(); 
			a=Integer.parseInt(str, 10);
			System.out.println(a);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        
        //字节流读取键盘上的数据
        DataInputStream dis=new DataInputStream(System.in);
        try{
        	//输出为不是想要的,会将你输入的num\r\n作为一个int进行解析
        	//a=dis.readInt();
        	//System.out.println(a);
        	str=dis.readLine();
        	a=Integer.parseInt(str);
        	System.out.println(a);
        }catch(Exception e){
        	e.printStackTrace();
        }
        //综合比较,对于读取键盘上的数据,建议还是使用Scanner,比较方便
        Scanner in=new Scanner(System.in);
        //可以输入字母或数字
        str=in.next();
        System.out.println(str);
        //只能输入数字,否则会报异常
        a=in.nextInt();
        System.out.println(a);
        //流用完需要进行关闭
        br.close();
        dis.close();}}

 

                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值