Перейти к контенту

Нахождение суммы и среднего значения в массиве Java

В этом кратком руководстве мы рассмотрим, как вычислить сумму и среднее значение в массиве Java, используя стандартные циклы.

Чтобы найти сумму всех элементов в массиве, мы можем просто перебрать массив и добавить каждый элемент к суммирующей переменной.

 

Это очень просто:

public static int findSumWithoutUsingStream(int[] array) {
int sum = 0;
for (int value : array) {
sum += value;
}
return sum;
}

или вычисляем сумму используя индексы:

int array[] = {3, 5, 7, 12};
int sum = 0;
for (int i = 0; i < array.length; ++i)
    sum += array[i];

Можно использовать Stream API для достижения того же результата:

public static int findSumUsingStream(int[] array) {
    return Arrays.stream(array).sum();
}

Важно знать, что метод sum() поддерживает примитивные типы.

Если мы хотим использовать целочисленные значения, сначала нужно преобразовать поток в IntStream, используя mapToInt метод. После этого применить метод sum() к нашему недавно преобразованному IntStream:

public static int findSumUsingStream(Integer[] array) {
    return Arrays.stream(array)
      .mapToInt(Integer::intValue)
      .sum();
}

Найти среднее значение элементов массива Java довольно легко. Напомним, что среднее = сумма чисел/количество чисел.

public static double findAverageWithoutUsingStream(int[] array) {
    int sum = findSumWithoutUsingStream(array);
    return (double) sum / array.length;
}

Примечание: деление int на int возвращает результат int. Джава массив имеет поле length, в котором хранится количество элементов.

Если подсчитывать через Java Stream API, то код умещается в одну строчку:

public static double findAverageUsingStream(int[] array) {
    return Arrays.stream(array).average().orElse(Double.NaN);
}

IntStream.average () возвращает OptionalDouble, который может не содержать значения и требует специальной обработки.

Чтобы узнать больше об OptionalDouble class, читайте документацию по Java 8.

Исходный код можно скачать тут.

 

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)