我有一个问题,我试图创建一个应用程序,计算文件中符号的所有出现...扫描方法“nextLine”停在一个空行...有没有办法让它继续它到达文件的真正结尾?
简而言之:我可以在文件中获得真实的行数吗?
提前谢谢!
答案 0 :(得分:7)
您可以使用循环:
int count = 0;
while (scanner.hasNextLine()) {
count++;
scanner.nextLine();
}
count
将包含多行。
答案 1 :(得分:1)
所以我一直在研究这个问题。我最近在用Java编写一个用于I类课程的行计数程序时遇到了它。
scanner类执行此操作的原因是因为scanner.next()和scanner.nextLine()返回标记,这些标记由分隔符分隔。默认情况下,分隔符为whitespace。所以发生的事情是,当你调用scanner.hasNext()或scanner.hasNextLine()时,它会查看下一个分隔符后是否有令牌。当文件以换行符结尾时,之后没有令牌,因此hasNext()和hasNextLine()返回false。
据我所知,做你想做的事情你需要计算分隔符的数量,这在Martinus的answer中得到了更好的处理。另见AFinkelstein的answer。
答案 2 :(得分:0)
请参阅Scanner.hasNextLine(),您应该在循环条件中使用它。如果它能更好地满足您的需求,还有一个Scanner.hasNext()。