Почему у меня не получается среднее арифметическое значение?
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();
Попробуйте ошибиться в таком коде))