Java 类Scanner的学习

Scanner类相当于一个简单的文本扫描器,主要用来处理一些简单的文本,能本将文本类型的字段根据正则表达式解析为java中的基本数据类型和字符串类型。

官方英文解释: A simple text scanner which can parse primitive types and strings using regular expressions.

Scanner类支持不同来源的文本,我们看一下Scanner所支持的构造函数。
构造函数

在上面所涉及的构造函数中,最常用的就是Scanner(InputStream in)这个构造函数,支持直接读取在控制台输入的数据。在一些在线笔试编程中,这个构造函数的使用的必不可少的。

Scanner类实现了Iterator这个接口,因此需要重写hasNext()和next()这两个方法。其实Iterator这个接口中还有两个方法:remove()和forEachRemaining()。但是这两个方法在Iterator已经通过关键字default提供了默认的实现,因此在Scanner中可以不实现这两个方法。(注:default这个关键字在java8中才出现的,之前的版本在接口中是不能提供方法的默认实现的。各位可以想一下既然接口中也可以提供方法的默认实现,那么接口和抽象类有啥区别呢?)。

在下面就简单分析下一些Scanner类中的一些常用的方法,和给出一些简单的测试用例,相信这些东西差不多够用了。。。

测试用例一:

import java.util.Scanner;

/**
 * Created by jiangchangwei on 2017/5/31.
 * calculate a + b
 */
public class ScannerTest1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //这一步就是想查看下字段之间的默认分隔符
        System.out.println("delimiter is:" + scanner.delimiter());
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        System.out.println("a + b = " + (a + b));

    }
}

Output:
这里写图片描述
上面是最简单的用法,仅仅是求出a+b之和。并且由结果可知,默认的分隔符为:\p{javaWhitespace}+(这个分隔符的定义包括:多个空白符、制表符和换行符}。

常用的方法:
useDelimiter(Pattern p) 和 useDelimiter(String s)
这两个方法用的还是比较多的,主要是用来修改字符之间的默认分隔符。
测试用例二:

import java.util.Arrays;
import java.util.Scanner;

/**
 * Created by jiangchangwei on 2017/6/1.
 */
public class ScannerTest2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] result = new int[5];
        System.out.println("默认分隔符为:" + scanner.delimiter());
        //修改默认的分隔符
        scanner.useDelimiter(",");
        System.out.println("修改之后的分隔符为:" +     scanner.delimiter());
        for(int i = 0; i < 5; i++) {
            result[i] = scanner.nextInt();
        }
        System.out.println("result数组中的值为:" +  Arrays.toString(result));
    }
}

Output:
这里写图片描述

由以上代码知,可以根据我们自己的需要,更改分隔符。

而Scanner类中还有两类的方法是比较重要的:一类是以hasNext开头的方法,一类是以next开头的方法:
这里写图片描述
这里写图片描述

这两类方法没有什么好说的,一类方法用来判断下一个需要的值是否存在,一类用来取下一个需要的值。

总结:Scanner类主要方便于我们处理一些文本,主要使用的就是正则表达式来匹配所对应的类型。在平常的应用中,写一些算法或者自己写一些测试类用的较多。大家就适当用一下这个类,不要过度使用,因为你会发现用的输入还是会有些小问题。比如:使用”,”分隔符,使用控制台输入时,必须文本后面还得跟一个逗号。不然会报异常之类。只能说java在这方面和其他的脚本语言差的不是一点半点。比如python,处理起来方便多了。(最好了解下java中的处理正则表达式的Pattern等类,正则表达式在一些场合还是能发挥奇效的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值