public static void main(String args[]) throws FileNotFoundException
{
String inputFileName = "textfile.txt";
printFileStats(inputFileName);
}
public static void printFileStats(String fileName) throws FileNotFoundException
{
String outputFileName = "outputtextfile.txt";
File inputFile = new File(fileName);
Scanner in = new Scanner(inputFile);
PrintWriter out = new PrintWriter(outputFileName);
int lines = 0;
int words = 0;
int characters = 0;
while(in.hasNextLine())
{
lines++;
while(in.hasNext())
{
in.next();
words++;
}
}
out.println("Lines: " + lines);
out.println("Words: " + words);
out.println("Characters: " + characters);
in.close();
out.close();
}
我有一个包含五行的文本文件
this is
a text
file
full of stuff
and lines
代码创建一个输出文件
Lines: 1
Words: 10
Characters: 0
但是,如果我删除了读取文件中字数的功能,它会正确显示行数 (5)。为什么会这样?
最佳答案
您的内部 while
循环正在吞噬整个文件。你想计算每一行的单词数,对吧?试试这个:
while (in.hasNextLine())
{
lines++;
String line = in.nextLine();
for (String word : line.split("\\s"))
{
words++;
}
}
请注意,按空格拆分是一种非常幼稚的标记化方法(单词拆分),并且仅适用于简单示例,例如您在此处提供的示例。
当然,您也可以执行 words += line.split("\\s").length;
而不是内部循环。
关于java - 我的输出假设整个文件是一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19554725/