Scanner & BufferReader

Sacnner:是一个基于正则表达式的文本扫描器,可以从文件、输入流、字符串中解析出基本类型值和字符串值。
主要提供了两个方法来扫描输入:
1、boolean hasNextXxx():是否还有下一个输入项,其中Xxx可以是Int,Long等基本数据类型的字符串。如果需要判断是否包含下一个字符串,可省去Xxx。
2、string nextXxx():获取下一个输入项。
以下两个方法用来读取一行:
1、boolean hasNextLine():是否还有下一行
2、string nextLine():返回下一行的字符串


默认情况下,Scanner使用空白(空格、回车)作为多个输入项之间的分隔符。

public static void main(String[] args) {
  //system.in代表标准输入,就是键盘输入
  Scanner s1=new Scanner(System.in);
  //只把回车作为分隔符
  s1.useDelimiter("\n");
  //判断是否还有下一个输入项
  while(s1.hasNext()){
   System.out.println(s1.next());
  }
 }

为Scanner设置分隔符使用useDelimiter(String pattern)方法即可,参数应是一个正则表达式。

Scanner不仅读取用户的键盘输入,还可以读取文件输入。只要在创建Scanner对象时,传入一个File对象作为参数即可。


public static void main(String[] args) throws FileNotFoundException {
  //将一个file对象作为Scanner的构造器参数,则scanner读取文件内容
  Scanner s1=new Scanner(new File("a.next"));
  
  //判断是否还有下一行
  while(s1.hasNextLine()){
   System.out.println(s1.nextLine());
  }
 }


BufferedReader是javaIO流中的一个字符串、包装类,它必须建立在另一个字符流的基础之上,但system.in是字节流,需用InputStreamReader将其包装成字符流。
public static void main(String[] args) throws IOException {
  //以system.in节点流创建一个BufferedReader对象
  BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  String buffer=null;
  
  //逐行读取键盘输入
  while((buffer=br.readLine())!=null){
   System.out.println(buffer);
  }
使用BufferedReader可以逐行读取用户的键盘输入,每次用户的键盘输入都被BufferedReader当成string对象。与Scanner不同的是,BufferedReader不能读取基本类型输入项,它总是读取string对象。

posted @ 2012-02-20 09:28  广东仔-学习ing  阅读(1711)  评论(0编辑  收藏  举报