【问题标题】:Java scanner count lines in fileJava 扫描程序计数文件中的行数
【发布时间】:2013-09-19 18:50:45
【问题描述】:

我有一个问题,我试图创建一个应用程序来计算文件中符号的所有出现次数...扫描仪方法“nextLine”在空行处停止...有没有办法让它继续运行直到它到达了文件的真正末尾?

简而言之:我可以获得文件中的真实行数吗?

提前谢谢你!

【问题讨论】:

  • 直到到达文件末尾才停止。你能告诉我们重现这个的代码吗?
  • 我相信我也有同样的困境。如果是这样,问题是如果最后一行是空白的,计数器将不会计算最后一行,并给出比实际少一的行数。

标签: java java.util.scanner


【解决方案1】:

你可以使用循环:

int count = 0;
while (scanner.hasNextLine()) {
    count++;
    scanner.nextLine();
}

count 将包含行数。

【讨论】:

  • 别忘了使用scanner.nextLine();否则你将陷入无限循环。
【解决方案2】:

所以我一直在对这个问题进行一些研究。我最近在为我正在学习的课程用 Java 编写行计数程序时遇到了这个问题。

scanner 类这样做的原因是因为scanner.next() 和scanner.nextLine() 返回由分隔符分隔的标记。默认情况下,分隔符是whitespace。所以发生的事情是,当您调用scanner.hasNext() 或scanner.hasNextLine() 时,它会查看下一个分隔符之后是否有标记。当文件以换行符结尾时,后面没有记号,所以 hasNext() 和 hasNextLine() 返回 false。

据我所知,要执行您想要的操作,您需要计算分隔符的数量,这在 Martinus 的 answer 中得到了更好的处理。另请参阅 Afinkelstein 的 answer

【讨论】:

    【解决方案3】:

    参见Scanner.hasNextLine(),您可能应该在循环条件中使用它。还有一个 Scanner.hasNext() 如果它更适合您的需求。

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多