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能读取任意长度的数据。