java - 我如何计算我的代码的平均值

标签 java arrays math mean

该文件包含各种球队名称,另一个文件包含比赛的出席人数。我正在尝试编写一段代码来查找每个团队的平均出勤率。

我希望它看起来像这样

public static double mean(double[] m) {
    double sum = 0;
    for (int i = 0; i < m.length; i++) {
        sum += m[i];
    }
    return sum / m.length;
}

我尝试自己解决这个问题,这就是我想出的结果。我正在尝试将两个列表合并在一起。

public static String getAverageAttendance(Team team)
{
    ArrayList<Match> ourList = new ArrayList(results);



    ArrayList<Match> teamsAttendance = new ArrayList<Match>();
    for (Match att : ourList)
    {
        if (att != null && att.getTeamName().equals(team.getName()))
        {
            teamsAttendance.add(att);
        }
    }



    float crowd = 0;
    for (Match att : teamsAttendance)
    {
     float multiplier = (att.getAttendance()/391);
     crowd = crowd + multiplier

    }
}

我知道代码可能需要重做,而且我认为我没有正确使用 float 。正如你所看到的,我是一个新手,任何帮助将不胜感激。

最佳答案

我将放弃 results 的假设是 static List<Match> 。有了这个假设,我相信你可以这样创建你的函数:

public static String getAverageAttendance(Team team) {
    double totalCrowds = 0.0;
    int totalMatches = 0;
    for (Match match : results) {
        if (match.getTeamName().equals(team.getName())) {
            totalCrowds += match.getAttendance();
            totalMatches++;
        }
    }
    double averageAttendance = totalMatches > 0 ? totalCrowds / totalMatches : 0.0;
    return String.valueOf(averageAttendance);
}

这样就不需要创建额外的列表,并且只迭代匹配一次。我选择double ,但您也可以轻松使用 float如果您喜欢这种类型。

如果您使用的是 Java 8 并且想要使用流:

public static String getAverageAttendance(Team team) {
    return String.valueOf(results
            .stream()
            .filter(m -> m.getTeamName().equals(team.getName()))
            .collect(Collectors.averagingDouble(Match::getAttendance)));
}

您可能需要更改averagingDoubleaveragingInt或任何适当的函数,具体取决于 Match::getAttendance 中的数字返回类型.

请注意,这两个函数都遵循您的原始方法签名并返回 String 。如果您可以控制此方法,我建议返回数字 doublefloat类型并允许调用者在必要时将其转换为字符串。我还建议传递 List<Match>对象作为方法的参数,而不是依赖 static变量,因为这将使该方法更可重用,但我不知道您的所有用例。

关于java - 我如何计算我的代码的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32148443/

相关文章:

java - android retrofit post request - 从正文中排除字段

javascript - 使用字符串作为对象字段来引用

c# - double.Parse 显然不适用于某些国家/地区

java - Ant 的 <property> "prefix"属性的 Maven 对应项是什么?

java - @MockBean 正确注入(inject)但在测试类上具有空值

java - 使用位操作运算符进行位格式转换

javascript - 循环遍历对象的嵌套数组

PHP 如果 array_key_exists,变量等于数组值 : How?

c++ - 矩阵乘法(不同维度)

javascript - 在给定一组 x 和 y 坐标的情况下,获取 javascript 中的曲线方程