我正在尝试编写一个读取文本文件的方法,并且对于每一行,打印出该行中的单词数

时间:2017-03-23 15:54:34

标签: java filereader

我认为标题是自我解释的。我正在尝试打印文本文件每行中有多少个单词,以下是我到目前为止的内容:

package filereader;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class WordNumberer
{
  public static void main(String[] args) throws FileNotFoundException
  {
    File file = new File("story.txt");
    Scanner scanner = new Scanner(file);
    int wordCount = 0;

    while (scanner.hasNextLine())
    {
        while (scanner.hasNext())
        {
          wordCount += 1;
          System.out.println(wordCount);
        }
    }
    scanner.close();
  }
}

2 个答案:

答案 0 :(得分:1)

你应该在第二次循环之外打印结果,你需要在开始计算下一行之前重置计数。

    while (scanner.hasNextLine()){               
       while (scanner.hasNext()){
           wordCount += 1;
       }
       System.out.println(wordCount);
       wordCount = 0;
     }

答案 1 :(得分:0)

如果您不使用下一个令牌,则

while (scanner.hasNext())是一个无限循环,如果您不使用该行,则while (scanner.hasNextLine())会遇到同样的问题。

除此之外,正如其他人已经指出pout一样,你应该只在行尾打印计数,然后将计数器重置为0.

while (scanner.hasNextLine())
    {
        while (scanner.hasNext())
        {
          wordCount += 1;
          scanner.next();// consume token

        }

        System.out.println(wordCount);// print count for the current line
        wordCount  = 0; // reset counter
        scanner.nextLine();//consume line
    }