Как найти среднее значение массива java

Например:

int[] numbers = {5, 8, 12, -18, -54, 84, -35, 17, 37};

Как найти среднее?
Какой алгоритм, или может есть специальные функции для этого?

Nofate's user avatar

Nofate

34.3k15 золотых знаков64 серебряных знака93 бронзовых знака

задан 17 июл 2015 в 16:55

Александр's user avatar

АлександрАлександр

9736 золотых знаков13 серебряных знаков33 бронзовых знака

1

Ну например:

IntStream.of(numbers).average();

Это Java 8, stream API. Проверка: http://ideone.com/hSng8I

ответ дан 17 июл 2015 в 16:57

VladD's user avatar

VladDVladD

206k27 золотых знаков289 серебряных знаков521 бронзовый знак

6

Сам алгоритм, который работает для всех версий Java:

// среднее арифметическое - сумма всех чисел деленная на их количество
int[] numbers = {5, 8, 12, -18, -54, 84, -35, 17, 37};

double average = 0;
if (numbers.length > 0)
{
    double sum = 0;
    for (int j = 0; j < numbers.length; j++) {
         sum += numbers[j];
    }
    average = sum / numbers.length;
}

ответ дан 17 июл 2015 в 21:54

pavelip's user avatar

1

OptionalDouble average = Arrays.stream(numbers).average();

ответ дан 17 июл 2015 в 17:36

kandi's user avatar

kandikandi

5,10910 золотых знаков47 серебряных знаков96 бронзовых знаков

class average {
    public static void main(String args[]) {
        int num [] = {5, 8, 12, -18, -54, 84, -35, 17, 37};
        double sum = 0;
        for (int x: num) {
        sum += x;
        }
            System.out.print("среднее арифметическое чисел равно: " + sum/num.length);
    }
}

ответ дан 22 авг 2018 в 14:10

Бахтияр Акпалинов's user avatar

1. Introduction

In this quick tutorial, we’ll cover how we can calculate sum & average in an array using both Java standard loops and the Stream API.

2. Find Sum of Array Elements

2.1. Sum Using a For Loop

In order to find the sum of all elements in an array, we can simply iterate the array and add each element to a sum accumulating variable.

This very simply starts with a sum of 0 and add each item in the array as we go:

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

2.2. Sum With the Java Stream API

We can use the Stream API for achieving the same result:

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

It’s important to know that the sum() method only supports primitive type streams.

If we want to use a stream on a boxed Integer value, we must first convert the stream into IntStream using the mapToInt method.

After that, we can apply the sum() method to our newly converted IntStream:

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

You can read a lot more about the Stream API here.

3.1. Average Without the Stream API

Once we know how to calculate the sum of array elements, finding average is pretty easy – as Average = Sum of Elements / Number of Elements:

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

Notes:

  1. Dividing an int by another int returns an int result. To get an accurate average, we first cast sum to double.
  2. Java Array has a length field which stores the number of elements in the array.

3.2. Average Using the Java Stream API

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

IntStream.average() returns an OptionalDouble which may not contain a value and which needs a special handling.

Read more about Optionals in this article and about the OptionalDouble class in the Java 8 Documentation.

4. Conclusion

In this article, we explored how to find sum/average of int array elements.

As always, the code is available over on Github.

Найти сумму и среднее в массиве Java

1. Вступление

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

2. Найти сумму элементов массива

2.1. Суммирование с использованием цикла For

Чтобы найти сумму всех элементов в массиве,we can simply iterate the array and add each element to a sum accumulating __ variable.

Это очень просто начинается сsum, равного 0, и по ходу добавления каждого элемента в массиве:

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

2.2. Суммирование с помощью Java Stream API

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

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

Если мы хотим использовать поток для упакованного значенияInteger, мы должны сначала преобразовать поток вIntStream с помощью методаmapToInt.

После этого мы можем применить методsum() к нашему недавно преобразованномуIntStream:

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

Вы можете узнать больше о Stream APIhere.

3. Найти среднее значение в массиве Java

3.1. Среднее без Stream API

Как только мы узнаем, как вычислить сумму элементов массива, найти среднее будет довольно просто – какAverage = Sum of Elements / Number of Elements:

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

Notes:

  1. Разделивint на другойint, вы получите результатint. To get an accurate average, we first cast sum to double.

  2. В JavaArray есть полеlength, в котором хранится количество элементов в массиве.

3.2. Среднее значение с использованием Java Stream API

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

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

4. Заключение

В этой статье мы изучили, как найти сумму / среднее значение элементов массиваint.

A quick and practical guide to find and to calculate the average of numbers in array using java language.

1. Overview

In this article, you’ll learn how to calculate the average of numbers using arrays

You should know the basic concepts of a java programming language such as Arrays and forEach loops.

We’ll see the two programs on this. The first one is to iterate the arrays using for each loop and find the average.

In the second approach, you will read array values from the user.

Let us jump into the example programs.

2. Example 1 to calculate the average using arrays

First, create an array with values and run. the for loop to find the sum of all the elements of the array.

Finally, divide the sum with the length of the array to get the average of numbers.

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

package com.javaprogramto.programs.arrays.average;

public class ArrayAverage {

    public static void main(String[] args) {

        int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

        int length = array.length;

        int sum = 0;

        for (int i = 0; i < array.length; i++) {

            sum += array[i];

        }

        double average = sum / length;

        System.out.println("Average of array : "+average);

    }

}

Output:

3. Example 2 to find the average from user inputted numbers

Next, let us read the input array numbers from the user using the Scanner class.

Scanner Example to add two numbers

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

import java.util.Scanner;

public class ArrayAverageUserInput {

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        System.out.println("Enter array size: ");

        int size = s.nextInt();

        int[] array = new int[size];

        System.out.println("Enter array values :  ");

        for (int i = 0; i < size; i++) {

            int value = s.nextInt();

            array[i] = value;

        }

        int length = array.length;

        int sum = 0;

        for (int i = 0; i < array.length; i++) {

            sum += array[i];

        }

        double average = sum / length;

        System.out.println("Average of array : " + average);

    }

}

Output:

1

2

3

4

5

6

7

8

9

Enter array size:

5

Enter array values : 

12

23

34

45

56

Average of array : 34.0

4. Conclusion

In this article, you’ve seen how to calculate the average number in an array.

All examples shown are in GitHub.

Average

Photo of Venkatesh Nukala

Venkatesh Nukala is a Software Engineer working for Online Payments Industry Leading company. In my free time, I would love to spend time with family and write articles on technical blogs. More on JavaProgramTo.com


Back to top button

В этом посте будет обсуждаться, как вычислить среднее арифметическое (среднее) всех элементов в списке в Java.

1. Использование Stream.average() метод

Если вы используете JDK версии 1.8 или выше, вы можете использовать Stream для этой тривиальной задачи. Идея состоит в том, чтобы преобразовать список в соответствующий примитивный поток, т.е. IntStream, DoubleStream, или же LongStream, и позвоните в average() метод на нем. Он возвращает необязательный параметр, описывающий среднее значение элементов в потоке, или пустой необязательный параметр, если поток пуст. Вот полный код:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

import java.util.Arrays;

import java.util.List;

class Main

{

    private static double getAverage(List<Integer> list) {

        return list.stream()

                .mapToInt(a -> a)

                .average().orElse(0);

    }

    public static void main(String[] args) {

        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

        double avg = getAverage(list);

        System.out.println(avg);        // 3.0

    }

}

Скачать  Выполнить код

2. Использование SummaryStatistics

Другой вероятный способ в Java 8 – получить SummaryStatistics соответствующего примитивного потока, который предоставляет такие статистические данные, как количество, минимум, максимум, сумма и среднее значение для элементов потока.

Следующий пример демонстрирует его использование для получения среднего арифметического элементов потока:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

import java.util.Arrays;

import java.util.IntSummaryStatistics;

import java.util.List;

class Main

{

    private static double getAverage(List<Integer> list) {

        IntSummaryStatistics stats = list.stream()

                .mapToInt(Integer::intValue)

                .summaryStatistics();

        return stats.getAverage();

    }

    public static void main(String[] args) {

        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

        double avg = getAverage(list);

        System.out.println(avg);        // 3.0

    }

}

Скачать  Выполнить код

 
Вот эквивалентный код без преобразования списка в примитивный поток.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

import java.util.Arrays;

import java.util.IntSummaryStatistics;

import java.util.List;

import java.util.stream.Collectors;

class Main

{

    private static double getAverage(List<Integer> list) {

        IntSummaryStatistics stats = list.stream()

                .collect(Collectors.summarizingInt(Integer::intValue));

        return stats.getAverage();

    }

    public static void main(String[] args) {

        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

        double avg = getAverage(list);

        System.out.println(avg);        // 3.0

    }

}

Скачать  Выполнить код

3. Использование Guava

Если вы предпочитаете библиотеку Guava, вы можете использовать Stats класс, который представляет собой набор статистических сводных значений, таких как сумма, количество, среднее, минимальное и максимальное значение и т. д. Чтобы вычислить среднее арифметическое списка, вы можете использовать статический Stats.meanOf() метод.

import com.google.common.math.Stats;

import java.util.Arrays;

import java.util.List;

class Main

{

    public static void main(String[] args) {

        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

        double avg = Stats.meanOf(list);

        System.out.println(avg);        // 3.0

    }

}

Скачать код

4. Использование цикла

Если вы используете более старые версии Java (Java 7 и более ранние версии) и не предпочитаете сторонние библиотеки, вы можете написать собственную процедуру для этой простой задачи, используя простой цикл for:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

import java.util.Arrays;

import java.util.List;

class Main

{

    private static double getAverage(List<Integer> list) {

        long sum = 0;

        for (int i: list) {

            sum += i;

        }

        return list.size() > 0 ? (double) sum / list.size() : 0;

    }

    public static void main(String[] args) {

        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

        double avg = getAverage(list);

        System.out.println(avg);        // 3.0

    }

}

Скачать  Выполнить код

Это все о вычислении среднего значения всех элементов в списке в Java.

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