Как найти сумму чисел из массива в java?
Да, да, я знаю, что этот код — кусок бреда, который даже близко не выполняет свою функцию, но я уже голову себе сломал и далеко я не математик (и не программист). Как же мне найти сумму чисел в массиве, при условии что длина массива может быть произвольной, а числа в нем разные, не имеющие какой либо последовательности?
Отслеживать
задан 3 сен 2011 в 15:53
user2771 user2771
9 ответов 9
Сортировка: Сброс на вариант по умолчанию
Честно не понял вопроса. В начале говорится — пытаюсь получить сумму некоторых чисел. а что значит некоторых?? Если всех чисел, то это очень просто сделать:
public static void testArray() < int myArray[] = ; int sum = 0; for (int i = 0; i < myArray.length; i++) < sum = sum + myArray[i]; >System.out.println(sum); >
Отслеживать
user417380
ответ дан 3 сен 2011 в 16:02
1,674 9 9 серебряных знаков 8 8 бронзовых знаков
Ну да, наверное всех. Не так выразился. Прощу прощения, имелось ввиду, что в массиве может быть абсолютно разные числа, которые идут не по порядку и все такое.
3 сен 2011 в 16:07
Я написал вам код, который суммирует все числа в массиве ,какой бы длины он ни был.
3 сен 2011 в 16:08
Блин так просто! Спасибо!
3 сен 2011 в 16:09
Нажмите только это спасибо))) Если ответ вам подошел, то заодно выбор ответа, чтобы вопрос закрылся)))
3 сен 2011 в 16:09
sum += myArray[i];
29 июл 2016 в 1:18
В Java 8 можно в 1 строку с помощью stream
int myArray[] = ; int total = IntStream.of(myArray).sum();
аналогично можно использовать класс Arrays
Arrays.stream(myArray).sum()
Метод stream имеет перегрузки для примитивных типов и обобщенный вид, что подойдет для массивов других типов.
Отслеживать
ответ дан 13 мая 2016 в 4:49
383 4 4 серебряных знака 11 11 бронзовых знаков
Существует несколько способов найти сумму элементов в массиве:
-
Используя Java 8 Stream API (сначала с помощью метода Arrays::stream преобразовываем массив в поток целых чисел, затем получаем сумму этого потока методом Stream::sum )
int array[] = ; int sum = Arrays.stream(array).sum();
int array[] = ; int sum = 0; for (int element : array) sum += element;
int array[] = ; int sum = 0; for (int i = 0; i < array.length; ++i) sum += array[i];
Онлайн примеры кода:
Отслеживать
ответ дан 18 ноя 2017 в 23:36
9,335 6 6 золотых знаков 24 24 серебряных знака 57 57 бронзовых знаков
>> задан 3 сен '11 в 15:53 --- спасибо вам за ответ!
20 ноя 2017 в 5:25
/** * Sum of all elements from 1 to 1000 */ final int sum = Stream.iterate(1, n -> n + 1).limit(1000).mapToInt(el -> el).sum();
Отслеживать
ответ дан 14 мар 2019 в 0:50
111 3 3 бронзовых знака
for (int i = 0; i
Отслеживать
user417380
ответ дан 2 апр 2017 в 20:02
Вот 3 способа, от самого примитивного, до нормального. Сильно не критикуйте, сам только учусь.
import java.util.Arrays; // сумма всех элементов массива, способ первый class BlaBlaBla1 < public static void main(String[] args) < int[] nums = ; int sum = 0; for (int i = 0; i < nums.length; i++) sum += nums[i]; System.out.println("1ый способ = " + sum); >> // сумма всех элементов массива, способ второй class BlaBlaBla2 < public static void main(String[] args) < int[] nums = ; int sum = 0; sum = Arrays.stream(nums).sum(); System.out.println("2ой способ = " + sum); > > // сумма всех элементов массива, способ третий: FOR-EACH class BlaBlaBla3 < public static void main(String[] args) < int[] nums = ; int sum = 0; for (int x : nums) sum += x; System.out.println("3ий способ = " + sum); > >
Метод reduce
Метод reduce сворачивает массив к одному значению (редуцирует). К примеру, с помощью этого метода можно легко найти сумму элементов массива (то есть массив сведется к одному значению - к сумме элементов).
Первым параметром метод reduce получает функцию, которая последовательно выполнится для каждого элемента массива, начиная с первого. В эту функцию можно передавать 4 параметра. Если эти параметры есть (они не обязательны), то в первый автоматически попадет , во второй попадет элемент массива, в третий - его номер в массиве (индекс), а в четвертый - сам массив.
Промежуточный результат - это переменная, в которой будет накапливаться то значение, которое вернет метод reduce , когда переберет все элементы массива. К примеру, туда последовательно можно накапливать сумму элементов массива: сначала положить первый элемент, при следующем проходе цикла уже сумму первого элемента и второго, при следующем проходе - сумму первого, второго и третьего. И так, пока массив не закончится. Функция, которую принимает reduce , должна возвращать новое значение промежуточного результата.
Вторым параметром метода reduce указывается начальное значение промежуточного результата. Если его не указать, то оно будет равно первому элементу массива, а обработка элементов начнется со второго элемента.
Синтаксис
массив.reduce(function(промежуточный результат, элемент, индекс, массив) < return новый промежуточный результат; >, начальное значение);
Пример
Найдем сумму элементов массива:
let arr = [1, 2, 3, 4, 5, 6]; let res = arr.reduce(function(sum, elem) < return sum + elem; >, 0); console.log(res);
Результат выполнения кода:
Пример
Давайте найдем сумму всех положительных чисел массива:
let arr = [1, -2, -3, 4, 5, -6]; let res = arr.reduce(function(sum, elem) < if (elem >= 0) < return sum + elem; >else < return sum; >>); console.log(res);
Результат выполнения кода:
Смотрите также
- метод reduceRight ,
выполняющий похожую операцию - метод filter ,
который позволяет фильтровать элементы массива - методы map и forEach ,
которые позволяют применить функцию к каждому элементу массива - методы some и every ,
выполняющие проверку массива
Сумма положительных элементов массива — Java
Программу целесообразно разбить на набор небольших функций, каждая из которых решает свою узкую задачу — такой подход соответствует принципу единственной обязанности (Single Responsibility Principle).
Блок-схема основной функции приведена на рисунке 1:
Блок-схема функции, вычисления суммы положительных элементов — на рисунке 2:
Соответствующий исходный код:
import java.util.Random; public class Main < public static void main(String[] args) < int array[] = new int[10]; generate_random(array, -50, 50); print(array); int sum = sum_positive(array); System.out.print("\nsum positive: " + sum); >public static int sum_positive(int array[]) < int sum = 0; for (int i = 0; i < array.length; i++) < if (array[i] >0) sum += array[i]; > return sum; > private static void print(int[] array) < for (int i = 0; i < array.length; ++i) System.out.print(" " + array[i]); System.out.print("\n"); >private static void generate_random(int[] array, int lowerbound, int upperbound) < Random rnd = new Random(); int bound = upperbound - lowerbound; for (int i = 0; i < array.length; ++i) array[i] = rnd.nextInt(bound) + lowerbound; >>
В исходном коде, функция заполнения массива случайными числами принимает два дополнительных параметра, задающих диапазон генерируемых значений. Для генерации числа в диапазоне [A, B] программа генерирует число в диапазоне B-A , а затем добавляет к полученному числу A . Схематично это можно показать так:
value = rand()%(B-A) value += A
Генерация случаных чисел выполняется с помощью библиотекчных функций модуля java.util.Random . При этом, сначала создается генератор чисел ( new Random() ), а затем для получения числа у него вызывается метод nextInt() .
Результат запуска внутри IDE Apache NetBeans приведен на рисунке 3:
Найти сумму элементов массива, расположенных между двумя заданными значениями
Определите сумму элементов массива, расположенных между минимальным и максимальным значениями
Всем привет. нужна хелпа для понимания у меня при минимальном значении всегда выдает 0 и как-то.
Определить абсолютное значение наименьшей разности между двумя любыми значениями элементов исходного одномерного массива
Здравствуйте, уважаемые знатоки. Никогда не программировал, и столкнулся с задачей по работе с.
Вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами
Помогите, пожалуйста. Нужно написать функцию, которая вычисляет сумму элементов массива.
Найти сумму элементов, расположенных до первого отрицательного элемента массива
Здравствуйте! Вот не могу решить такую задачку, надеюсь кто то поможет! Заранее спасибо! Надо.
Am I evil? Yes, I am!
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624
Сообщение было отмечено Велери как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Введите размер массива N: "); int n = sc.nextInt(); int a[] = new int[n]; System.out.println("Исходный массив: "); for (int i = 0; i n; i++) { a[i] = (int) (Math.random() * 20); System.out.print(a[i] + "\t"); } System.out.print("\nВведите начальный элемент: "); n = sc.nextInt(); System.out.print("\nВведите конечный элемент: "); int m = sc.nextInt(); int s = 0; for (int i = n; i m + 1; i++) { s += a[i]; // Сумма всех элементов заданного массива } System.out.printf("Сумма всех элементов заданного массива в диапазоне %d. %d равна: %d", n, m, s); } }