【acm基础】scanner 类详解

参考jdk17的api手册:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html

官方概念

在这里插入图片描述
scanner可以通过指定正则表达式(regular expressions)进行基本类型数据以及string的解析(实际上就是分割成几个tokens),官方把分割string方法分为正则表达式定界符(delimiter pattern)两种方法。其中默认的定界符就是空格(whitespace)。

官方实例

next方法返回指针当前的下一个值,默认指针在0号位上,该位置没有数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于hasnext与next方法取值的图解:

string是一行token
在这里插入图片描述

关于重置默认分界符

在这里插入图片描述
可以通过reset方法重置为空格
在这里插入图片描述

关于各个方法的阻塞问题

如果是两个next方法,会默认解析输入字符串并找到两个tokens
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
The findInLine(), findWithinHorizon(), skip(), and findAll() methods operate independently of the delimiter pattern. These methods will attempt to match the specified pattern with no regard to delimiters in the input and thus can be used in special circumstances where delimiters are not relevant. These methods may block waiting for more input.
官方表示:在调用findInline,skip等方法匹配某个样式(pattern)时,会无视(或者说去掉)分界符并按照分界符去分割原来的字符为几个tokens。

使用正则表达式或者是分界符模式可能返回空的token

在这里插入图片描述

官方表示:要正确使用正则表达式:例如\s只是表示一个空格,\s+则是复数形式的连续匹配

关于scanner是如何做到读取可读对象到末尾而终结

在这里插入图片描述
通过抛出io异常而得知
在这里插入图片描述

scanner不是线程安全的

在这里插入图片描述

scanner默认扫描到的数字是十进制的

默认处理的数字是十进制(decimal numbers),可以通过指定基数(radix)来修改是多少进制
在这里插入图片描述

构造方法

在这里插入图片描述

常用方法

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值