使用Java中的数组计算数据表中行的平均值

时间:2017-10-28 00:46:06

标签: java arrays methods

我正在尝试计算行和列的平均值。所以,我可以得到列的平均值,但是,我很难计算行的平均值。

我有这样的数据表,

Example1      Example2    Example2  
 85              75         92
 80              91         89
 85              52         78

到目前为止我正在做的是将每列作为一个数组:

int[] Example1 = {85, 80, 85};
int[] Example2 = {75, 91, 52};
int[] Example3 = {92, 89, 78};

然后我创建了一个这样的方法(计算表中每列的平均值),

public static void avg_calc(int[] examples) { 
    int sum = 0;
    int avg;
    for (int i = 0; i < examples.length; i ++) {
        sum += examples[i];
    }
    avg = sum/examples.length;
    System.out.println("Average is " + avg);
}   

这样,当我avg_calc(Example1)时,我可以计算'Example1`数组的平均值,即83.

但是,我想计算Example1Example2Example3的平均值,例如,第一行的平均值,即84.

如何在我的函数中添加另一个数组来计算行的平均值?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

  

如何在我的函数中添加另一个数组来计算平均值   对于行?

一种方法:

    int[] Example1 = {85, 80, 85};
    int[] Example2 = {75, 91, 52};
    int[] Example3 = {92, 89, 78};
    int[][] examples = {Example1, Example2, Example3}; // new array

    for (int i = 0; i < examples[0].length; i++) {
        double rowAverage = 0;
        for (int[] arr : examples) {
                rowAverage += arr[i];
        }
        System.out.println("Average of row " + (i + 1) + ": " + rowAverage / examples.length);
    }        

<强>输出

Average of row 1: 84.0
Average of row 2: 86.66666666666667
Average of row 3: 71.66666666666667

答案 1 :(得分:2)

@alfasin的回答很棒,这是一个java 8解决方案:

public static int getRowAverage(int index, int[]... examples) {
    return Arrays.stream(examples)
            .mapToInt(ex -> ex[index]).sum() / examples.length;

}

您可以尝试:

public static void main(String[] args) {
    int[] example1 = {85, 80, 85};
    int[] example2 = {75, 91, 52};
    int[] example3 = {92, 89, 78};
    // for row 1 (index 0)
    int average_row_1 = getRowAverage(0, example1, example2, example3);
    System.out.println(average_row_1);
}