对阵列中的数组求平均值

时间:2017-04-23 23:39:45

标签: java arrays average

我想遍历我的数组列表名单,并且对于每个学生项目,我想返回一系列成绩的平均值。我知道有三个等级,所以这段代码可以工作,但是如果我不知道学生的等级数组中有多少等级,我怎么能实现呢?

    public static void printAverageGrades(){
    System.out.println("Print Average Grades");
    for(Student item : roster)
    {
        double div = roster.size();
        **double average = (item.getGrades()[0] + item.getGrades()[1] + item.getGrades()[2]) / div;**
        System.out.printf("%.2f \n", average);
    }
}

2 个答案:

答案 0 :(得分:0)

你可以这两种方式。首先列出更优选的Java 8方式。

  • 使用Arrays.stream将数组封装为流,然后获取平均值只是几个方法调用。

    double avg = Arrays.stream(item.getGrades()).average().getAsDouble();
    
  • 使用另一个for循环并保持元素的运行总数。不要忘记手动将你的分子强制转换为double,否则你会遇到整数除法。

    int sum = 0;
    for(int i : item.getGrades()) {
        sum += i;
    }
    double avg = (sum * 1.0) / item.getGrades().length;
    

在实践中,永远不会对您的索引位置进行硬编码。您可以 始终 获取数组using .length的长度。

答案 1 :(得分:0)

你可以使用这个迭代数组的函数,通过动态迭代for循环,我们计算sum。 然后将平均值除以数组的长度。

double getAverage(double[] data)
{
    double sum = 0.0;
    for(double a : data)
        sum += a;
    return sum/data.length;
}