java 如何计算一个只有一个流操作序列的文件的平均行长度?[关闭]

xuo3flqw  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(103)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question
我的任务如下:
写一个方法,计算文件中各行的平均长度。(如果文件中没有行,则应返回。)

static double averageLineLength(String inFile) throws IOException

找到一个只使用一个流操作链的解决方案。
我的解决办法是

public static double averageLineLength(String inFile) throws IOException {
        return Files.lines(Paths.get(inFile))
            .mapToInt(s -> s.length())
            .sum()
        /
        Files.lines(Paths.get(inFile))
            .count();
}

问题是我需要两个流来获得平均行长度。不幸的是,我不知道如何计算一个流中的行长度和行数量,或者更确切地说,如何计算平均值。有人能帮我找到一个序列的流操作来解决这个任务吗?

jqjz2hbq

jqjz2hbq1#

不确定我们是否需要使用double,但根据您的规范,您可以考虑使用DoubleSummaryStatistics,它将为您提供平均值和计数(加上最小值,最大值和总和)。

public static DoubleSummaryStatistics lineLength(String inFile) throws IOException {
    try (Stream<String> lines = Files.lines(Paths.get(inFile))) {
        return lines
                .mapToDouble(s -> s.length())
                .summaryStatistics();           
    }
}

相关问题