Как найти среднее значение чисел в 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

В нашей жизни мы далеко не всегда используем точные цифры, да это и не каждый раз удобно. Некоторые результаты обобщают, выражая среднее значение, особенно когда речь идет о статистике, прогнозах и отчетах. Это может быть и среднее время в пути, и средняя успеваемость ученика, и средняя заработная плата на предприятии, и средняя температура по больнице (в последнем примере мы, разумеется, шутим). Но как бы там не было, мы должны знать, как быстро и точно посчитать среднее арифметическое число. Об этом — наша статья. Дополнительно рассмотрим на примерах, как вычисляет среднее арифметическое число компилятор языка программирования Java.

На практике формулу о том, как найти или вычислить среднее арифметическое, изучают в пятом классе. Что же, давайте освежим знания, полученные в далеком (а для кого-то и в недалеком) детстве.  

Что такое среднее арифметическое? Формула нахождения числа

Средним арифметическим некоторого множества чисел называют сумму всех этих чисел, разделенных на общее количество слагаемых. То есть искомое значение вычисляет следующая формула:

В примере ниже мы считаем среднее арифметическое трех простейших чисел:

  • 2,
  • 3,
  • 4.

Давайте обозначим сре днее арифметическое латинской буквой «m» и вычислим сумму вводимых чисел:

2 + 3 + 4 = 9.

А чтобы рассчитать среднее арифмети ческое, останется разделить эту сумму на три. Таким образом, формулу нахождения можно представить следующим образом:

И все? Так просто?

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

Что здесь что:

  • x — это наше среднее арифметическое;
  • xn — конкретное значение числа;
  • n — общее количество значений.

У такой формулы есть много плюсов:

  • прекрасный выбор при нормальном распределении значений в существующей выборке;
  • интуитивная доступность;
  • посчитать легко и просто.

Однако с математической точки зрения тут существуют и минусы:

  • используя эту формулу, довольно сложно представить распределение введенных значений;
  • есть вероятность запутаться в различных величинах.

Теперь давайте посмотрим, как расчет среднего числа может выглядеть в программном коде. Заодно и проверим пример выше ;-):

public class Main {

    public static void main(String[] args) {

        int[] nums = {2, 3, 4};

        int result = 0;

        for (int m : nums) {

            result += m;

        }

        System.out.println(«Значение среднего арифметического равно: » + result / nums.length);

    }

}

Можно было легко догадаться, что мы получим 3, значит вышеописанная формула нахождения среднего арифметического числа находит правильный результат.

На деле вы можете ввести в код выше какие угодно значения чисел, а также изменить количество введенных чисел. Однако если надо вычислить более точный результат (это особенно актуально для ввода ряда чисел с десятичным значением), тип данных в Java надо будет изменить на double:

Источники:

  • https://skysmart.ru/articles/mathematic/kak-najti-srednee-arifmeticheskoe;
  • https://www.examclouds.com/ru/java/java-core-russian/srednee-arifmeticheskoye.

Все это выглядит чрезвычайно просто. Если же вы ищете действительно сложные и продвинутые решения по Java-программированию, обратите внимание на программу Java-курса в Otus:


Загрузить PDF


Загрузить PDF

Вычисление средней величины – важно в повседневной жизни. Средняя величина или среднее арифметическое значение используется во многих математических операциях, и очень важно уметь это вычислять. Но, при работе с большими числами, гораздо проще использовать специальную программу. Здесь вы прочитаете, как самостоятельно написать программу на Java, чтобы вычислить среднюю величину.

Шаги

  1. Изображение с названием Write a Program in Java to Calculate the Mean Step 1

    1

    Напишите план программы. Планирование – это очень важный шаг. Подумайте о том, где будет использоваться данная программа. Эта программа будет работать с очень большими числами? Если да, то вы можете решить, использовать ли такие типы данных, как long вместо int.

    • Попробуйте вычислить среднюю величину ряда чисел самостоятельно. Это поможет вам понять принцип действия программы.
  2. 2

    Напишите код. Чтобы вычислить среднюю величину, вам понадобятся следующие параметры:

    Изображение с названием Write a Program in Java to Calculate the Mean Step 2
    • Сумма всех введенных пользователем чисел
      • К примеру, если сумма введенных чисел = 100, а количество чисел = 10, то средняя величина =100 / 10 = 10
    • Таким образом , формула вычисления средней величины:

      Средняя величина = сумма всех чисел /количество чисел.

    • Чтобы получить эти данные, используйте функцию «Scanner» в Java.
      • Вам потребуется получить большое количество пользовательских данных из которых вам нужно вычислить среднюю величину. Для этого попробуйте использовать цикл. В примере кода ниже используется цикл «for». Также вы можете попробовать использовать цикл «while».
  3. Изображение с названием Write a Program in Java to Calculate the Mean Step 3

    3

    Вычислите среднюю величину. Используя формулу, приведенную выше, напишите код для вычисления средней величины. Убедись в том, что переменная, используемая для сохранения значения «средней величины» имеет тип «float». Иначе ответ может быть неправильным.

    • Это происходит потому, что тип данных «float» это 32 битное число одинарной точности, которое даже считает десятичные в математических вычислениях. Таким образом, при использовании переменною типа float, ответ для математического действия 5 / 2 (5 делить на 2) будет 2.5.
      • Если такое же вычисление (5 / 2) будет выполняться при помощи переменной типа «int», ответ будет 2.
      • Однако, переменные, в которых вы сохраняете «сумму» и «количество значений», могут иметь тип «int». Используя переменную типа «float» для «средней величины» автоматически изменит её тип с «int» на «float»; и все вычисление будет выполняться в float вместо int.
  4. Изображение с названием Write a Program in Java to Calculate the Mean Step 4

    4

    Выведите на экран результат. Когда программа вычислит среднюю величину, покажите ее пользователю. В Java для этого спользуйте функцию System.out.print или System.out.println (чтобы печатать на новой строке).

    Реклама

Пример кода

import java.util.Scanner;

public class main_class {
    public static void main(String[] args){
      int sum = 0, inputNum;
      int counter;
      float mean;
      Scanner NumScanner = new Scanner(System.in);
      Scanner charScanner = new Scanner(System.in);
      
      System.out.println("Enter the total number of terms whose mean you want to calculate");

      counter = NumScanner.nextInt();
      
      System.out.println("Please enter " + counter + " numbers:");
      
      for(int x = 1; x<=counter ;x++){          
          inputNum = NumScanner.nextInt();
          sum = sum + inputNum;
          System.out.println();
      }
      
      mean = sum / counter;
      System.out.println("The mean of the " + counter + " numbers you entered is " + mean);
    }
}
import java.util.Scanner;

/*
*Эта система ввода позволяет пользователю вводить  
*числа, пока не будут введены все необходимые данные. 
*Командная строка используется, чтобы программа распознала,
 *когда пользователь ввел данные. 
*Integer.parseInt (строка  s) возвращает к числу, которое
 *содержит строка  (т.е. Integer.parseInt("462")==462).
 *
 *Важно отметить: используя этот метод для ввода переменных,
 *нельзя сравнивать строки  "==" or "!=". Иначе,
 *строки сравниваются, основываясь на их расположении в памяти компьютера.
 *s.equals(строка  t) показывает, если содержимое строк
 *одинаково. !s.equals(String t) показывает, если содержание строк
 *разное.

 */
public class main_class {
    public static void main(String[] args){
      String sentinel = "";
      int sum = 0;
      int counter = 0;
      double mean = 0.0;
      Scanner NumScanner = new Scanner(System.in);
      
      System.out.println("Enter numbers to add. Enter "d" when done.");
      
      System.out.print("Enter number: ");
      sentinel = NumScanner.next();
      System.out.println();

      while(!sentinel.equals("d") && !sentinel.equals("D")) {
           sum += Integer.parseInt(sentinel);
           counter++;

           System.out.print("Enter number: ");
           sentinel = NumScanner.next();
           System.out.println();
      }

      mean = (sum*1.0)/counter;

      System.out.println();
      System.out.println("The arithmetic mean is: " + mean +".");
    }
}

Советы

  • Попробуйте использовать программу для выполнения многочисленных математических операций.
  • Попробуйте изменить графический интерфейс, чтобы программа стала более красочной и легкой в использовании.

Реклама

Об этой статье

Эту страницу просматривали 15 568 раз.

Была ли эта статья полезной?

В этом посте будет обсуждаться, как вычислить среднее арифметическое (среднее) всех элементов в списке в 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.

Средним арифметическим множества чисел называют сумму всех этих чисел, разделенных на общее количество слагаемых. В Java найти среднее арифметическое можно при помощи цикла или используя стримы. Рассмотрим пример с циклом:

class App {
    public static double average(int[] numbers) {
        var length = numbers.length;
        var sum = 0;

        // Находим сумму всех чисел
        for (double num : numbers) {
            sum += num;
        }
        // И делим её на количество слагаемых
        return sum / length;
    }
}
App.average(new int[] {1, 2, 3}); // 2.0

Также можно использовать стримы. Рассмотрим вариант на стримах

import java.util.Arrays;

class App {
    public static double average(int[] numbers) {
        Arrays.stream(numbers).average().getAsDouble();
    }
}
App.average(new int[] {1, 2, 3}); // 2.0

Понравилась статья? Поделить с друзьями:
  • Как найти коэффициент от суммы формула
  • Как найти спонсоров в инстаграмме
  • Java nio file accessdeniedexception как исправить
  • Как найти кредитора по исполнительному листу
  • Как найти циклическую ссылку в книге excel