java中Scanner输入字符串和BufferedReader输入字符串的区别

 我来答
ifeilong
2016-09-16 · TA获得超过8068个赞
知道大有可为答主
回答量:1187
采纳率:100%
帮助的人:784万
展开全部

Scanner 和BufferedReader输入实例如下:

import java.io.*;
import java.util.Scanner;
public class C {
public static void main(String []args) throws IOException
{

    String x1,x2;
    int sum=0;

    System.out.print("BufferedReader方法\ninput two number:");
    //BufferedReader对象只将回车看作输入结束,得到的字符串
    BufferedReader myReader=new BufferedReader(new InputStreamReader(System.in));

    x1=myReader.readLine();
    x2=myReader.readLine();
    int a=Integer.parseInt(x1);
    int b=Integer.parseInt(x2);
    sum=a+b;
    System.out.printf("Sum=%d",sum);

    System.out.println("\n\nScanner 方法");
    Scanner sc=new Scanner(System.in);
    int a1,b1;
    a1=sc.nextInt();  
    //Scanner对象把回车,空格,tab键都看作输入结束,直接用sc.next()得到的是字符串形式
    b1=sc.nextInt();
    System.out.print("sum="+(a1+b1));    
  }
}


BufferedReader是字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取!速度要比Scanner快!而且也可以设置缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。


在创建Scanner类的对象时,需要用System.in作为它的参数,也可以将Scanner看作是System.in对象的支持者,System.in取得用户输入的内容后,交给Scanner来作一些处理.


Scanner类中提供了多个方法:


      next():取得一个字符串;
      nextInt():将取得的字符串转换成int类型的整数;
      nextFloat():将取得的字符串转换成float型;
      nextBoolean():将取得的字符串转换成boolean型;


    如果想读取正行文本,可以使用nextLine()方法;
   Scanner类位于java.util包中,要加上import java.util.Scanner; 用Scanner获得用户的输入非常的方便,但是Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键.当按下这其中的任一键时,Scanner就会返回下一个输入.当你输入的内容中间包括空格时,显然,使用Scanner就不能完整的获得你输入的字符串.这时候我们可以考虑使用BufferedReader类取得输入.其实在Java SE 1.4及以前的版本中,尚没有提供Scanner方法,我们获得输入时也是使用BufferReader的.


  BufferedReader类位于java.io包中,所以要使用这个类,就要引入java.io这个包

import java.io.BufferedReader. readLine()方法会返回用户在按下Enter键之前的所有字符输入,不包括最后按下的Enter返回字符.以Enter键为结尾。

使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常(Exception).使用BufferedReader来取得输入,理解起来要复杂得多.但是使用这个方法是固定的,每次使用前先如法炮制就可以了



另外,对于Scanner 和BufferedReader还可以有以下实例:


package com.demo;  
  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.util.Scanner;  
  
public class Demo {  
    public static void main(String[] args) throws Exception {  
        String m = new String(" ");  
        int[] a = { 0, 0, 0 };  
        BufferedReader stdin = new BufferedReader(new InputStreamReader(  
                System.in));  
        System.out.println("输入三个数(以一个空格分开): ");  
        m = stdin.readLine();  
        Scanner scan = new Scanner(m);//将输入的一行文本作为扫描对象  
        for (int i = 0; i < a.length; i++) {  
            a[i] = scan.nextInt();  
        }  
        System.out.println("输入数为: ");  
        for (int i = 0; i < a.length; i++) {  
            System.out.print(a[i] + " ");  
        }  
                  
  
    }  
}

对于Scanner ,是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。扫描器可以从实现Readable 接口的任何对象读取文本。


构造方法:


Scanner(File source) 
          构造一个新的 Scanner,它生成的值是从指定文件扫描的。    

Scanner(File source, String charsetName) 
          构造一个新的 Scanner,它生成的值是从指定文件扫描的。    

Scanner(InputStream source) 
          构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。    

Scanner(InputStream source, String charsetName) 
          构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。    

Scanner(Readable source) 
          构造一个新的 Scanner,它生成的值是从指定源扫描的。    

Scanner(ReadableByteChannel source) 
          构造一个新的 Scanner,它生成的值是从指定信道扫描的。    

Scanner(ReadableByteChannel source, String charsetName) 
          构造一个新的 Scanner,它生成的值是从指定信道扫描的。    

Scanner(String source) 
          构造一个新的 Scanner,它生成的值是从指定字符串扫描的。    

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式