栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么hasNext()为False,而hasNextLine()为True?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么hasNext()为False,而hasNextLine()为True?

文件末尾有一个额外的换行符。

  • hasNextLine()
    检查
    linePattern
    缓冲区中是否还有另一个。
  • hasNext()
    检查缓冲区中是否有可解析的令牌,由扫描仪的定界符分隔。

由于扫描程序的定界符是空格,并且

linePattern
也是空格,因此
linePattern
缓冲区中可能有一个a ,但没有可解析的标记。

通常,最常见的处理此问题的方法是始终

nextLine()
在解析文本每一行中的所有标记(例如数字)之后调用。在使用
Scanner
时也需要从中读取用户输入时执行此操作
System.in
。要使扫描仪越过此空格定界符,必须使用
scanner.nextLine()
清除行定界符。


附录:

LinePattern
被定义为
Pattern
与此匹配的:

private static final String LINE_SEPARATOR_PATTERN =      "rn|[nru2028u2029u0085]";private static final String LINE_PATTERN = ".*("+LINE_SEPARATOR_PATTERN+")|.+$";

默认令牌定界符是这样的

Pattern

private static Pattern WHITESPACE_PATTERN = Pattern.compile("\p{javaWhitespace}+");


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437979.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号