首页 > 编程语言 >20230418 java.util.Scanner

20230418 java.util.Scanner

时间:2023-06-22 14:55:59浏览次数:35  
标签:返回 定界符 20230418 Scanner 匹配 next util java 方法

简介

  • public final class Scanner implements Iterator<String>, Closeable
  • 一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。Scanner 使用分隔符模式将其输入分解为标记,默认情况下匹配空格。然后可以使用各种 next 方法将生成的标记转换为不同类型的值。
  • Scanner 使用的默认空白定界符由 Character.isWhitespace() 识别。 reset() 方法会将 Scanner 的定界符的值重置为默认的空白定界符
    • 默认空白定界符包括空格、回车、制表符等
  • next 和 hasNext 方法及其伴随方法(例如 nextInt 和 hasNextInt)首先跳过与定界符模式匹配的任何输入,然后尝试返回下一个标记。
  • hasNext() 和 next() 方法都可能阻止等待进一步的输入。 hasNext() 方法是否阻塞与其关联的 next() 方法是否阻塞无关。 tokens 方法也可能会阻塞等待输入。
  • findInLine()、findWithinHorizon()、skip() 和 findAll() 方法独立于定界符模式运行。这些方法将尝试匹配指定的模式而不考虑输入中的分隔符,因此可以在分隔符不相关的特殊情况下使用。这些方法可能会阻塞等待更多输入。
  • 当 Scanner 抛出 InputMismatchException 时,Scanner 将不会传递导致异常的令牌,以便可以通过其他方法检索或跳过它。
  • 根据定界模式的类型,可能会返回空标记。例如,模式“\s+”将不会返回空标记,因为它匹配分隔符的多个实例。定界模式“\s”可能会返回空标记,因为它一次只传递一个空格。
  • Scanner 可以从任何实现 Readable 接口的对象中读取文本。如果对底层可读对象的 read() 方法的调用抛出 IOException,则 Scanner 假定已到达输入的末尾。底层可读对象最近抛出的 IOException 可以通过 ioException 方法获取。
  • 当 Scanner 关闭时,如果源实现了 Closeable 接口,它将关闭其输入源。
  • 线程不安全
  • 默认将数字解释为十进制,useRadix 方法设置不同的基数
  • 能够扫描标准格式以及区域设置格式的数字。初始语言环境是 Locale.getDefault(Locale.Category.FORMAT) 方法返回的值;它可以通过 useLocale() 方法更改。
  • 本地化格式根据以下参数定义,对于特定区域设置,这些参数取自该区域设置的 DecimalFormat 对象 df 及其 DecimalFormatSymbols 对象 dfs。

构造方法

File, InputStream, Path, ReadableByteChannel

  • Scanner(File source)
  • Scanner(File source, Charset charset)
  • Scanner(File source, String charsetName)

Readable, String

  • Scanner(Readable source)

public 方法

扫描器信息:

  • delimiter, useDelimiter
    • 返回定界符
  • radix, useRadix
    • 返回基数
  • locale, useLocale
    • 返回语言环境

hasNext 和 next 系列方法:

  • hasNext, hasNextLine

  • hasNextBigDecimal, hasNextBigInteger

  • hasNextBoolean, hasNextByte, hasNextDouble, hasNextFloat, hasNextInt, hasNextLong, hasNextShort

  • next, nextLine

  • nextBigDecimal, nextBigInteger

  • nextBoolean, nextByte, nextDouble, nextFloat, nextInt, nextLong, nextShort

  • close

  • ioException

    • 返回此 Scanner 的底层 Readable 最后抛出的 IOException。如果不存在此类异常,则此方法返回 null。
  • findAll

  • findInLine

    • 按行扫描,如果匹配不到返回null,并且Scanner位置不变
  • findWithinHorizon

    • 入参 horizon 表示扫描范围长度
  • match

    • 返回本扫描仪最后一次扫描操作的匹配结果。如果未执行任何匹配,或者如果最后一次匹配不成功,则此方法抛出 IllegalStateException。 Scanner 的各种 next 方法在完成且未抛出异常的情况下使匹配结果可用。例如,在调用返回 int 的 nextInt 方法后,此方法返回 MatchResult 以搜索上面定义的 Integer 正则表达式。类似地,findInLine()、findWithinHorizon() 和 skip() 方法在成功时将进行匹配。
  • reset

    • 重置扫描仪会丢弃其所有可能已通过调用 useDelimiter() 、 useLocale() 或 useRadix() 更改的显式状态信息。
  • skip

    • 跳过与指定模式匹配的输入,忽略定界符。如果指定模式的锚定匹配成功,此方法将跳过输入。如果在当前位置未找到指定模式的匹配项,则不会跳过任何输入并抛出 NoSuchElementException
  • tokens

    • 从此扫描器返回以定界符分隔的令牌流。该流包含将返回的相同标记,从该扫描器的当前状态开始,通过重复调用 next 方法直到 hasNext 方法返回 false。生成的流是顺序的和有序的。所有流元素都是非空的。
  • toString

    • 返回 Scanner 信息

测试用例

// 按行输出文件内容
Scanner sc = new Scanner(Path.of("D:\\Develop\\workspace\\study\\study-design-pattern\\src\\main\\java"
        + "\\study\\hwj\\test\\ScannerTest.java"));
while (sc.hasNextLine()) {
    System.out.println(sc.nextLine());
}

标签:返回,定界符,20230418,Scanner,匹配,next,util,java,方法
From: https://www.cnblogs.com/huangwenjie/p/17490470.html

相关文章

  • java 金额显示千分符 java 千分位
    /**@param要格式化的数字;*@return*/*格式化数字为千分位显示;*publicstaticStringfmtMicrometer(Stringtext){DecimalFormatdf=null;if(text.indexOf(".")>0){if(text.length()-text.indexOf(".")-1......
  • java计算两个时间相差天数的方法汇总
    问题描述:输入:两个日期输出:两个日期相差的天数具体代码实现方法1:通过Calendar类的日期比较。注意:这里需要考虑一下:日期是跨年份的,如一个是2012年,一个是2015年的年份是分闰年和平年的,各自的天数不同1234567891011121314151617181920212223242526272829303132333435363738......
  • 宋红康-Java基础复习笔记详细版
    Java基础复习笔记第01章:Java语言概述1.Java基础学习的章节划分第1阶段:Java基本语法Java语言概述、Java的变量与进制、运算符、流程控制语句(条件判断、循环结构)、break\continue、IDEA开发工具的使用、数组第2阶段:面向对象编程(基础、进阶、高级)第3阶段:Java高级应用异常......
  • Excel中PMT计算月供函数的java实现
    Excel中计算月供的公式名叫PMT,有关这个公式的详细描述如下:http://office.microsoft.com/zh-cn/excel-help/HP010342769.aspx下图是Excel中使用这个公式的一个简单说明。Java中实现这个公式可以用下面函数注意,这个函数的所有输入参数都是double类型的。包括支付的月份数,否则计算......
  • 换个姿势,十分钟拿下Java/Kotlin泛型
    0x1、引言解完BUG,又有时间摸鱼学点东西了,最近在复习Kotlin,跟着朱涛的《Kotlin编程第一课》查缺补漏。看到泛型这一章时,想起之前面一家小公司时的面试题:说下你对泛型协变和逆变的理解?读者可以试试在不查资料的情况下能否答得上来?反正我当时是没想起来,尽管写过一篇《Kotlin刨根问底......
  • Java—多线程
    ......
  • Java—反射与注解
    ......
  • Java—集合框架
    什么是集合......
  • Javascript
    什么是Javascript概述javaScript是一门世界上最流行的脚本语言Java,JavaScript10天一个合格的后端人员,必须精通JavaScript历史ECMAScript它可以理解为JavaScript的一个标准最新版本已经到es6版本~但是大部分浏览器还只停留在支持es5代码上!开发环境–线上环境,版本不一致......
  • 转Java路线语法注意点
    面向对象编程概念:面向对象编程——以类的方式组织代码,以对象的组织数据。1.类和对象类是一个模板:抽象,对象:一个具体的实例。2.方法就是函数。3.对象的引用引用类型:基本类型(8)对象是通过引用来操作的:栈——>堆。4.属性在Java里叫字段。5.对象的创建和使用必须使用new关键......