No Line found错误但我不明白怎么回事?

时间:2015-02-10 19:51:19

标签: java

我真的试图编写一个计算文本文件中单词的程序并计算多少行,但我一直得到无行错误。

import java.util.*;
import java.io.*;

public class input {

 public static void main(String[] args) throws FileNotFoundException {

    String name;
    int lineCount = 0;
    int wordCount = 0;
    File input = new File("C:\\Users\\Ceri\\workspace1\\inputoutput\\src\\inputoutput\\lab1task3.txt");
    Scanner in = new Scanner(input);

    while(in.hasNextLine()){
        while(in.hasNext()){
            wordCount++;
            in.next();
        }
        lineCount++;
        in.nextLine();
    }

    System.out.println(lineCount);
    System.out.println(wordCount);
    in.close();


}

}

问题在于while(in.hasnextline())循环。

4 个答案:

答案 0 :(得分:1)

这是因为你的内部while循环耗尽了扫描仪的所有输入字符。 in.hasNext()不会停留在新的换行符上。

答案 1 :(得分:0)

您错误地实施了hasNextLine()hasNext(),以便您已阅读内部scannerwhile内的所有令牌。

阅读每个单词和行的更简单方法是实现以下内容:

int words = 0;
 int lines = 0;

   while(in.hasNextLine())  {
        lines++;
        String line = in.nextLine()
        words += new StringTokenizer(line, " ,").countTokens();
    }

答案 2 :(得分:0)

这样做

while(in.hasNextLine())
{
    Scanner ins=new Scanner(in.nextLine());
    while(ins.hasNext())
    {
       wordCount++;
       ins.next();
    }
    lineCount++;
}

答案 3 :(得分:0)

在循环内循环时,您正在到达文件的末尾。一旦它到达文件的末尾,它将从内循环中出来。 lineCount将递增,然后in.nextLine()将被执行。 Scanner的对象缓冲区内没有任何值,因此您得到了这个结果。

试试这个:

while(in.hasNextLine()){
    String line = in.nextLine();
    lineCount++;
    String[] words = line.split(" ");
    wordCount += words.length;
}