如何计算二维数组的平均值?

时间:2021-03-04 00:29:18

标签: java arrays multidimensional-array average

我想知道二维数组中的平均值计算是否与一维数组相同?我还能看到它的java代码吗?这就是我所拥有的,但我没有得到正确的答案。

static int avgRecursion(int a[][], int i, int j, int f) {
    // Last element
    if (i == f - 1)
        return a[i][j];

    // When index is 0, divide sum computed so far by n.
    if (i == 0)
        return ((a[i][j] + avgRecursion(a, i + 1, j, f)) / f);

    // Compute sum
    return (a[i][j] + avgRecursion(a, i + 1, j, f));
}

static int[][] array;

static {
    array = new int[3][4];

    System.out.println("Enter 12 numbers: ");
    Scanner scan = new Scanner(System.in);

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            array[i][j] = scan.nextInt();
        }
    }
    int f = array.length;
    int average = avgRecursion(array, 0, 0, f);
    System.out.println("The average of the 2D array: " + average);
}

2 个答案:

答案 0 :(得分:3)

我猜您想找到存储在二维数组中的所有值的平均值。这是一个小程序:

public static void main(String[] args) {
    int[][] arr = new int[4][5];
    int sum = 0;
    // Length * Breadth gives total number of elements in array
    int arrLength = (arr.length * arr[0].length);

    // Populate array
    // Your program gets the values from the user
    // but i'm hardcoding them. Hope you get the point
    for (int row = 0; row < arr.length; row++) {
        for (int col = 0; col < arr[row].length; col++) {
            arr[row][col] = 20;
        }
    }

    // Actual answer starts here
    // Calculate sum of all values stored in the array
    for (int row = 0; row < arr.length; row++) {
        for (int col = 0; col < arr[row].length; col++) {
            sum += arr[row][col];
        }
    }

    // Print total sum / length of array
    System.out.print("The average of the 2D array is " + sum / arrLength);
}

答案 1 :(得分:1)

您可以像往常一样将二维数组展平为一维并取一维数组的平均值:

int[][] arr = {{1, 2, 3, 4, 5}, {6, 7, 8}, {9}};

double avg = Arrays.stream(arr)
        .flatMapToInt(Arrays::stream)
        .average()
        .orElse(Double.NaN);

System.out.println(avg); // 5.0
相关问题