gpt4 book ai didi

java - 我的输出假设整个文件是一行

转载 作者:行者123 更新时间:2023-11-29 07:53:26 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com