Почему у меня не получается среднее арифметическое значение?

int[][] arrays = {
        {25, 100, 12},
        {2, 3, 7},
        {85, 14, 24}
};
double average = 0;
if (arrays.length > 0) {
    double sum = 0;

    for (int i = 0; i < arrays.length; i++) {
        for (int j = 0; j < arrays[i].length; j++) {
            sum += arrays[i][j];
            System.out.print(arrays[i][j] + " ");
        }
        System.out.println();
    }
    average = (sum / arrays.length);
    System.out.println("Average = " + average);
}

Ответы (2 шт):

Автор решения: Igor

Вы делите не на то число.

double sum = 0;
int count = 0; // размер массивов

for (int i = 0; i < arrays.length; i++) {
    count += arrays[i].length; // добавляем размер каждого массива
    for (int j = 0; j < arrays[i].length; j++) {
        sum += arrays[i][j];
        System.out.print(arrays[i][j] + " ");
    }
    System.out.println();
}
average = sum / count; // вместо arrays.length подставляем count
System.out.println("Average = " + average);
→ Ссылка
Автор решения: Дмитрий

Как по мне, то подобные ошибки возникают из-за излишней сложности кода. Если найти более простое решение, то и ошибиться будет просто негде. Я бы сделал так :

double average = Arrays.stream(arrays)
        .flatMapToInt(i -> Arrays.stream(i))
        .average().getAsDouble();

Попробуйте ошибиться в таком коде))

→ Ссылка