第十三章 Scanner定界符

 

 

由于在默认情况下Scanner根据空白字符对输入进行分词,为满足不同的分词要求,Scanner提供的使用正则表达式的方式去指定你所需的定界符:

 1 package 字符串;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.StringReader;
 6 import java.util.Scanner;
 7 
 8 /**
 9  * 扫描输入与使用流读入对比
10  * 
11  * Scanner默认以空白作为定界符
12  * @author admin
13  *
14  */
15 public class Scan {
16     
17     public static final String STR = "Sir Robin of Camelot\n22 1.61803  0.897";
18     
19     public static void main(String[] args) {
20         //scan();
21        22         
23         delimiter();
24     }
25     
26     
27     @SuppressWarnings("resource")
28     public static void scan() {
29         Scanner scanner = new Scanner(Scan.STR);
30         
31         //nextLine()读取下一行的内容,并且指针向下移动一行
32         System.out.println(scanner.nextLine());//只认换行符,不认我直接换行
33 
34         //nextInt()/nextDouble()指针不会在向下移动,而是水平移动。
35         System.out.println(scanner.nextInt());
36         System.out.println(scanner.nextDouble());
37         System.out.println(scanner.nextDouble());
38         
39         
40         //当找不到本行内下一个值时会抛出异常。找不到下一行时也会抛出异常
41         //System.out.println(scanner.nextDouble());
42         //System.out.println(scanner.nextLine());
43         
44         //Scanner有一个假设,在输入结束时会抛出IOException,所以Sanner会把IOExecption吞掉
45         System.out.println(scanner.ioException());
46     }
47     
48     
49     /**
50      * Scanner默认以空白符作为定界符,你可以使用正则表达式去指定定界符
51      */
52     public static void delimiter() {
53         Scanner sc = new Scanner("12,34,56,90");
54         sc.useDelimiter("\\s*,\\s*");
55         while(sc.hasNextInt()) {
56             System.out.println(sc.nextInt());
57         }
58     }
59 
60 }

控制台:

12
34
56
90

 

posted @ 2018-07-14 14:42  刘呆哗  阅读(329)  评论(0编辑  收藏  举报