Например:
int[] numbers = {5, 8, 12, -18, -54, 84, -35, 17, 37};
Как найти среднее?
Какой алгоритм, или может есть специальные функции для этого?
Nofate♦
34.3k15 золотых знаков64 серебряных знака93 бронзовых знака
задан 17 июл 2015 в 16:55
АлександрАлександр
9736 золотых знаков13 серебряных знаков33 бронзовых знака
1
Ну например:
IntStream.of(numbers).average();
Это Java 8, stream API. Проверка: http://ideone.com/hSng8I
ответ дан 17 июл 2015 в 16:57
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
1
OptionalDouble average = Arrays.stream(numbers).average();
ответ дан 17 июл 2015 в 17:36
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
В нашей жизни мы далеко не всегда используем точные цифры, да это и не каждый раз удобно. Некоторые результаты обобщают, выражая среднее значение, особенно когда речь идет о статистике, прогнозах и отчетах. Это может быть и среднее время в пути, и средняя успеваемость ученика, и средняя заработная плата на предприятии, и средняя температура по больнице (в последнем примере мы, разумеется, шутим). Но как бы там не было, мы должны знать, как быстро и точно посчитать среднее арифметическое число. Об этом — наша статья. Дополнительно рассмотрим на примерах, как вычисляет среднее арифметическое число компилятор языка программирования 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
Напишите план программы. Планирование – это очень важный шаг. Подумайте о том, где будет использоваться данная программа. Эта программа будет работать с очень большими числами? Если да, то вы можете решить, использовать ли такие типы данных, как long вместо int.
- Попробуйте вычислить среднюю величину ряда чисел самостоятельно. Это поможет вам понять принцип действия программы.
-
2
Напишите код. Чтобы вычислить среднюю величину, вам понадобятся следующие параметры:
- Сумма всех введенных пользователем чисел
- К примеру, если сумма введенных чисел = 100, а количество чисел = 10, то средняя величина =100 / 10 = 10
- Таким образом , формула вычисления средней величины:
Средняя величина = сумма всех чисел /количество чисел.
- Чтобы получить эти данные, используйте функцию «Scanner» в Java.
- Вам потребуется получить большое количество пользовательских данных из которых вам нужно вычислить среднюю величину. Для этого попробуйте использовать цикл. В примере кода ниже используется цикл «for». Также вы можете попробовать использовать цикл «while».
- Сумма всех введенных пользователем чисел
-
3
Вычислите среднюю величину. Используя формулу, приведенную выше, напишите код для вычисления средней величины. Убедись в том, что переменная, используемая для сохранения значения «средней величины» имеет тип «float». Иначе ответ может быть неправильным.
- Это происходит потому, что тип данных «float» это 32 битное число одинарной точности, которое даже считает десятичные в математических вычислениях. Таким образом, при использовании переменною типа float, ответ для математического действия 5 / 2 (5 делить на 2) будет 2.5.
- Если такое же вычисление (5 / 2) будет выполняться при помощи переменной типа «int», ответ будет 2.
- Однако, переменные, в которых вы сохраняете «сумму» и «количество значений», могут иметь тип «int». Используя переменную типа «float» для «средней величины» автоматически изменит её тип с «int» на «float»; и все вычисление будет выполняться в float вместо int.
- Это происходит потому, что тип данных «float» это 32 битное число одинарной точности, которое даже считает десятичные в математических вычислениях. Таким образом, при использовании переменною типа float, ответ для математического действия 5 / 2 (5 делить на 2) будет 2.5.
-
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 553 раза.
Была ли эта статья полезной?
Средним арифметическим множества чисел называют сумму всех этих чисел, разделенных на общее количество слагаемых. В 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
In this article, we will discuss how to calculate sum and average of a List or ArrayList in Java 8
- Use IntSummaryStatistics to find various parameters/statistics of a List like,
- Sum of all elements in a List using getSum() method which returns value in long-type
- Average of all elements in a List using getAverage() method which returns value in double-type
- Minimum element from a List using getMin() method which returns value in integer-type
- Maximum element from a List using getMax() method which returns value in integer-type
- Number of elements in a List (or count) using getCount() method which returns value in long-type
CalculateStatisticsOfListInJava8.java
package in.bench.resources.list.sum.average; import java.util.Arrays; import java.util.IntSummaryStatistics; import java.util.List; public class CalculateStatisticsOfListInJava8 { public static void main(String[] args) { // list List<Integer> numbers = Arrays.asList( 2, 3, 5, 7, 11, 13, 17 ); // print numbers to console System.out.println("Original elements :-"); numbers.stream().forEach(num -> System.out.println(num)); // IntSummaryStatistics using Java 8 Stream API IntSummaryStatistics statistics = numbers .stream() .mapToInt(num -> num) .summaryStatistics(); // 1. sum - print sum to the console System.out.println("n1. Sum is = " + statistics.getSum()); // 2. average - print average to the console System.out.println("n2. Average is = " + statistics.getAverage()); // 3. min - print minimum to the console System.out.println("n3. Minimum is = " + statistics.getMin()); // 4. max - print maximum to the console System.out.println("n4. Maximum is = " + statistics.getMax()); // 5. count - print count to the console System.out.println("n5. Count is = " + statistics.getCount()); } }
Output:
Original elements :- 2 3 5 7 11 13 17 1. Sum is = 58 2. Average is = 8.285714285714286 3. Minimum is = 2 4. Maximum is = 17 5. Count is = 7
2. Java – Find sum and average of a List
- In the below illustrations, we will find sum, average, minimum, maximum and count of elements in a List
- Sum – by iterating using enhanced for-loop and adding/summing & saving in a variable
- Average – divide above calculated sum by number of elements (or size of elements)
- Sort List elements in ascending order
- Minimum – get 1st element from sorted List using index 0
- Maximum – get last element from sorted List using last index i.e., (size – 1)
- Use size() method of List to get number/count of elements
CalculateStatisticsOfList.java
package in.bench.resources.list.sum.average; import java.util.Arrays; import java.util.Collections; import java.util.List; public class CalculateStatisticsOfList { public static void main(String[] args) { // local variables int sum = 0; double average = 0.0; // list List<Integer> numbers = Arrays.asList( 2, 3, 5, 7, 11, 13, 17 ); // print numbers to console System.out.println("Original elements :-"); numbers.stream().forEach(num -> System.out.println(num)); // sort List elements to find min and max Collections.sort(numbers); // find sum by iterating using enhanced for-loop for(int num : numbers) { sum += num; } // 1. sum - print sum to the console System.out.println("n1. Sum is = " + sum); // find average by dividing sum and size of List elements average = (double) sum / (double) numbers.size(); // 2. average - print average to the console System.out.println("n2. Average is = " + average); // 3. min - print minimum to the console System.out.println("n3. Minimum is = " + numbers.get(0)); // 4. max - print maximum to the console System.out.println("n4. Maximum is = " + numbers.get(numbers.size() - 1)); // 5. count - print count to the console System.out.println("n5. Count is = " + numbers.size()); } }
Output:
Original elements :- 2 3 5 7 11 13 17 1. Sum is = 58 2. Average is = 8.285714285714286 3. Minimum is = 2 4. Maximum is = 17 5. Count is = 7
Related Articles:
- Java 8 – Find Largest number in an Arrays or List or Stream
- Java 8 – Find Smallest number in an Arrays or List or Stream
- Java 8 – Find 2nd Largest number in an Arrays or List or Stream
- Java 8 – Find 2nd Smallest number in an Arrays or List or Stream
- Java 8 – Find sum of Largest 2 numbers in an Arrays or List or Stream
- Java 8 – Find sum of Smallest 2 numbers in an Arrays or List or Stream
- Java 8 – Find 1st and Last elements in an Arrays
- Java 8 – Find 1st and Last elements in a List or ArrayList
- Java 8 – Find 1st and Last elements in a Set or HashSet
- Java 8 – Find 1st and Last entries in a Map or HashMap
- Java 8 – Find sum and average of a List or ArrayList
- Java 8 – How to calculate sum and average of an Arrays ?
References:
- IntStream (Java Platform SE 8 ) (oracle.com)
- IntSummaryStatistics (Java Platform SE 8 ) (oracle.com)
Happy Coding !!
Happy Learning !!