Как вы находите сумму всех чисел в массиве в Java? - PullRequest
115 голосов
/ 29 декабря 2010

У меня проблема с поиском суммы всех целых чисел в массиве в Java.Я не могу найти какой-либо полезный метод в классе Math для этого.

Ответы [ 24 ]

3 голосов
/ 29 декабря 2010
int sum = 0;
for (int i = 0; i < myArray.length; i++)
  sum += myArray[i];
}
3 голосов
/ 31 августа 2013

Мне нравится этот метод лично.Мой стиль кода немного странный.

public static int sumOf(int... integers) {
    int total = 0;
    for (int i = 0; i < integers.length; total += integers[i++]);
    return total;
}

Довольно легко использовать в коде:

int[] numbers = { 1, 2, 3, 4, 5 };
sumOf(1);
sumOf(1, 2, 3);
sumOf(numbers);
2 голосов
/ 29 декабря 2010

Вы можете сделать свой код лучше так:

public void someMethod(){
    List<Integer> numbers = new ArrayList<Integer>();
    numbers.addAll(db.findNumbers());
    ...
    System.out.println("Result is " + sumOfNumbers(numbers));
}

private int sumOfNumbers(List<Integer> numbers){
    int sum = 0;
    for (Integer i : numbers){
      sum += i;
    }
    return sum;
}
2 голосов
/ 29 декабря 2010

Из этого упражнения можно извлечь две вещи:

Вам нужно как-то перебирать элементы массива - это можно сделать с помощью цикла for или цикла while Вам необходимо сохранить результат суммирования в накопителе. Для этого вам нужно создать переменную.

int accumulator = 0;
for(int i = 0; i < myArray.length; i++) {
    accumulator += myArray[i];
}
2 голосов
/ 29 декабря 2010

Вы должны бросить свои собственные.
Вы начинаете с общего числа 0. Затем вы учитываете для каждого целого числа в массиве, добавьте его к итогу. Тогда, когда у вас нет целых чисел, у вас есть сумма.

Если целых чисел не было, то итоговое значение равно 0.

1 голос
/ 21 августа 2016

В библиотеке underscore-java есть метод sum ().

Пример кода:

import com.github.underscore.lodash.U;

public class Main {
    public static void main(String[] args) {
        int sum = U.sum(java.util.Arrays.asList(1, 2, 3, 4));

        System.out.println(sum);
        // -> 10
    }
}
0 голосов
/ 14 марта 2019
/**
 * Sum of all elements from 1 to 1000
 */
final int sum = Stream.iterate(1, n -> n + 1).limit(1000).mapToInt(el -> el).sum();
0 голосов
/ 16 августа 2018

Использовать нижнюю логику

static int sum()
     {
         int sum = 0; // initialize sum
         int i;

         // Iterate through all elements and add them to sum
         for (i = 0; i < arr.length; i++)
            sum +=  arr[i];

         return sum;
     }
0 голосов
/ 10 сентября 2017

Мы можем использовать пользовательскую функцию.Сначала инициализируйте переменную суммы, равную нулю.Затем пройдитесь по массиву и добавьте элемент с суммой.Затем обновите переменную суммы.

Фрагмент кода:

import java.util.*;   
import java.lang.*;  
import java.io.*;


class Sum
{
    public static int sum(int arr[])
    {
        int sum=0;

        for(int i=0; i<arr.length; i++)
        {
            sum += arr[i];
        }
        return sum;
    }

    public static void main (String[] args)
    {
          int arr[] = {1, 2, 3, 4, 5};

          int total = sum(arr);

          System.out.printf("%d", total);
    }
}
0 голосов
/ 06 июля 2015

Начиная с Java 8 Использование лямбда-выражений стало доступно.

См. Это:

int[] nums = /** Your Array **/;

Компакт:

int sum = 0;
Arrays.asList(nums).stream().forEach(each -> {
    sum += each;
});

Предпочтение:

int sum = 0;

ArrayList<Integer> list = new ArrayList<Integer>();

for (int each : nums) { //refer back to original array
     list.add(each); //there are faster operations…
}

list.stream().forEach(each -> {
    sum += each;
});

Возврат или печать суммы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...