我真的试图编写一个计算文本文件中单词的程序并计算多少行,但我一直得到无行错误。
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())循环。
答案 0 :(得分:1)
这是因为你的内部while循环耗尽了扫描仪的所有输入字符。 in.hasNext()
不会停留在新的换行符上。
答案 1 :(得分:0)
您错误地实施了hasNextLine()
和hasNext()
,以便您已阅读内部scanner
内while
内的所有令牌。
阅读每个单词和行的更简单方法是实现以下内容:
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;
}