Scanner类的应用

来源:互联网 发布:java面向对象什么意思 编辑:程序博客网 时间:2024/05/16 15:59

/*
 * 本程序演示Scanner类的应用。
 * Scanner是JDK1.5新增的一个类,位于java.util包下,是一个用于扫描输入文本的新的实用程序。
 * 借助于使用正则表达式和从输入流中检索特定类型数据项,Scanner类可以针对任何要处理的文本内容编写自定义的语法分析器。
 */
package com.lwj.demo;

import java.io.*;
import java.util.*;
import java.util.regex.*;

public class ScannerDemo {

 public static void main(String[] args) throws Exception {
  
  //Scanner的第一种应用:用默认的分界符扫描一个字符串,并按照类型依次读出来
  System.out.println("————————Scanner的第一种应用—————————");
  Scanner s=new Scanner("20 28.2 true Hi");
  System.out.println(s.nextInt());
  System.out.println(s.nextDouble());
  System.out.println(s.nextBoolean());
  System.out.println(s.next());
  
  //Scanner的第二种应用:用指定的分界符(可以是一个正则表达式)扫描一个字符串,并按照类型依次读出来
  System.out.println("————————Scanner的第二种应用—————————");
  String input = "1 fish 2 fish red fish blue fish";
  s = new Scanner(input).useDelimiter("//s*fish//s*");
     System.out.println(s.nextInt());
     System.out.println(s.nextInt());
     System.out.println(s.next());
     System.out.println(s.next());
   
     //Scanner的第三种应用:用指定的分界符扫描一个文件,并按照相应的格式分析
     /*
      * props.txt内容
    <entry key="java.runtime.name">Java(TM) SE Runtime Environment</entry>
   <entry key="sun.boot.library.path">C:/Java/jre6/bin</entry>
   <entry key="java.vm.version">14.0-b16</entry>
   <entry key="java.vm.vendor">Sun Microsystems Inc.</entry>
   <entry key="java.vendor.url">http://java.sun.com/</entry>
   <entry key="path.separator">;</entry>
   <entry key="java.vm.name">Java HotSpot(TM) Client VM</entry>
   <entry key="file.encoding.pkg">sun.io</entry>
      */
     System.out.println("————————Scanner的第三种应用—————————");
  s=new Scanner(new File("props.txt"))
    .useDelimiter(System.getProperty("line.separator"));
      while (s.hasNext()) {
   System.out.println(Parse(s.next()));
  }
  s.close();
 }

 public static String Parse(String string) {
  Scanner s = new Scanner(string);
  s.findInLine("<entry key=/"([//w.]*)/">([//w.:()-_/~//s]*)</entry>");
  MatchResult result = s.match();
  String str = result.group(1) + "/t" + result.group(2);
  s.close();
  return str;
 }
}

 

运行结果为:

————————Scanner的第一种应用—————————
20
28.2
true
Hi
————————Scanner的第二种应用—————————
1
2
red
blue
————————Scanner的第三种应用—————————
java.runtime.name Java(TM) SE Runtime Environment
sun.boot.library.path C:/Java/jre6/bin
java.vm.version 14.0-b16
java.vm.vendor Sun Microsystems Inc.
java.vendor.url http://java.sun.com/
path.separator ;
java.vm.name Java HotSpot(TM) Client VM
file.encoding.pkg sun.io

原创粉丝点击