Scanner类BufferedReader类的引申讨论

* A: Scanner类的使用
    * a: 导包import java.util.Scanner;
    * b:创建键盘录入对象 Scanner sc = new Scanner(System.in);
    * c: 读取键盘录入的一个整数
        * int enterNumber = sc.nextInt();
    * d: 读取键盘录入的字符串
        * String enterString = sc.next();
* B: 案例代码
    import java.util.Scanner;
    public class Demo05Scanner{
        public static void main(String[] args) 
        {
            Scanner sc = new Scanner(System.in);

            int enterNumber = sc.nextInt();
            System.out.println("用户输入的整数为"+enterNumber);

            String enterString = sc.next();
            System.out.println("用户输入的字符串为"+enterString);
        }
    }
* C:BufferedReader类的使用
    * a:导包 import java.io.BufferedReader; java.io.IOException; java.io.InputStreamReader;
    * b:创建键盘录入对象 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    * c:读取键盘录入的字符串  
        * String text = br.readLine();(BufferedReader只能获取字符串格式,需要手动转换成其他格式 比如转换成int格式 int a = Integer.parseInt(text);)
    * d:关闭流
        * br.close();
* D:案例代码
    import java.io.*;
    /*import java.io.BufferedReader;
    import java.io.IOException;//--
    import java.io.InputStreamReader;//--*/
    public class BufferedReaderDemo{
        public static void main(String[] args) throws IOException{//--
            BufferedReader re = new BufferedReader(new InputStreamReader(System.in));
            String text = re.readLine();//--read 
            System.out.println(text);
            re.close();
        }   
    }
* E:Scanner和BufferedReader差别
    * a:导包数不同
        Scanner导包时只需要导java.util.Scanner
        BufferedReader需要导java.io.BufferedReader; java.io.IOException; java.io.InputStreamReader;三个包
        (当然,有时候为了省事可以将三个包简略成java.io.*;程序会自动匹配对应的包,这种写法不影响性能,因为没用到的包系统并不会加载进来。)
    * b:读取数据差别
        Scanner读取数据是按空格符,其中包括空格键 tab键和enter键,只要遇到其中之一,Scanner的方法就会返回到下一个输入。
        BufferedReader在遇到enter键时会返回到下一个输入,所以BufferedReader可以输入和读取有空格的数据。
    * c:数据长度
        BufferedReader能读取任意长度的数据。
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄