Как вы находите сумму всех чисел в массиве в Java?

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

Ответ 1

В вы можете использовать потоки:

int[] a = {10,20,30,40,50};
int sum = IntStream.of(a).sum();
System.out.println("The sum is " + sum);

Выход:

Сумма 150.

Это в упаковке java.util.stream

import java.util.stream.*;

Ответ 2

Если вы используете Java 8, класс Arrays предоставляет метод stream(int[] array), который возвращает последовательный IntStream с указанным int массив. Он также был перегружен для массивов double и long.

int [] arr = {1,2,3,4};
int sum = Arrays.stream(arr).sum(); //prints 10

Он также предоставляет метод stream(int[] array, int startInclusive, int endExclusive), который позволяет вам взять указанный диапазон массива (что может быть полезно):

int sum = Arrays.stream(new int []{1,2,3,4}, 0, 2).sum(); //prints 3

Наконец, он может принимать массив типа T. Таким образом, вы можете, например, иметь String, который содержит числа в качестве входных данных, и если вы хотите их суммировать, просто сделайте:

int sum = Arrays.stream("1 2 3 4".split("\\s+")).mapToInt(Integer::parseInt).sum();

Ответ 3

Это одна из тех простых вещей, которая не существует (AFAIK) в стандартном Java API. Достаточно легко написать свой собственный.

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

int someArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum = 0;

for (int i : someArray)
    sum += i;

Кроме того, пример суммирования массива - это показанный в спецификации языка Java 7. Пример: Раздел 10.4 - Доступ к массиву.

class Gauss {
    public static void main(String[] args) {
        int[] ia = new int[101];
        for (int i = 0; i < ia.length; i++) ia[i] = i;
        int sum = 0;
        for (int e : ia) sum += e;
        System.out.println(sum);
    }
}

Ответ 4

Вы не можете. У других языков есть несколько методов для этого, например array_sum() в PHP, но Java нет.

Просто..

int[] numbers = {1,2,3,4};
int sum = 0;
for( int i : numbers) {
    sum += i;
}

System.out.println(sum);

Ответ 5

В Apache Math: есть StatUtils.sum(double[] arr)

Ответ 6

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

int[] someArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Integer.MAX_VALUE};
long sum = 0;

for (int i : someArray)
    sum += i;

Ответ 7

int sum = 0;

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

Ответ 8

В Java 8

Код:

   int[] array = new int[]{1,2,3,4,5};
   int sum = IntStream.of(array).reduce( 0,(a, b) -> a + b);
   System.out.println("The summation of array is " + sum);

  System.out.println("Another way to find summation :" + IntStream.of(array).sum());

Выход:

The summation of array is 15
Another way to find summation :15

Объяснение:

В Java 8 вы можете использовать концепцию сокращения, чтобы выполнить добавление.

Читать все о сокращении

Ответ 9

IMHO функция sum будет казаться хорошей возможностью расширить класс Arrays, где заполняются, сортируются, просматриваются, копируются и равны в реальном времени. В javadocs есть много удобных методов, поэтому справедливый вопрос при переносе Fortran в java, чтобы спросить, прежде чем запускать наш собственный вспомогательный метод. Просматривайте огромный индекс javadoc для "sum", "add" и любого другого ключевого слова, о котором вы могли бы подумать. Возможно, вы подозреваете, что кто-то уже сделал это для примитивных типов int, float, double, Integer, Float, Double? Независимо от того, насколько просто, всегда хорошо проверять. Держите код как можно более простым и не изобретайте велосипед.

Ответ 10

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

Ответ 11

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

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);

Ответ 12

Я использую это:

public static long sum(int[] i_arr)
{
    long sum;
    int i;
    for(sum= 0, i= i_arr.length - 1; 0 <= i; sum+= i_arr[i--]);
    return sum;
}

Ответ 13

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

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

Ответ 14

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

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

int accumulator = 0;
for(int i = 0; i < myArray.length; i++) {
    accumulator += myArray[i];
}

Ответ 15

Вы можете сделать код более удобным:

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;
}

Ответ 16

define a sum variable = 0

for each number in array:
    sum = sum + number

Ответ 17

В библиотеке 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
    }
}

Ответ 18

Для такой вещи нет "метода в математическом классе". Его не похоже на его функцию квадратного корня или что-то в этом роде.

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

Ответ 19

class Addition {

     public static void main() {
          int arr[]={5,10,15,20,25,30};         //Declaration and Initialization of an Array
          int sum=0;                            //To find the sum of array elements
          for(int i:arr) {
              sum += i;
          }
          System.out.println("The sum is :"+sum);//To display the sum 
     }
} 

Ответ 20

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

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

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);
    }
}

Ответ 21

Используйте приведенную ниже логику:

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

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

         return sum;
     }

Ответ 22

/**
 * Sum of all elements from 1 to 1000
 */
final int sum = Stream.iterate(1, n -> n + 1).limit(1000).mapToInt(el -> el).sum();

Ответ 23

Немного удивлен, увидев, что ни один из приведенных выше ответов не считает, что это может быть в несколько раз быстрее при использовании пула потоков. Здесь parallel использует пул потоков fork-join и автоматически разбивает поток на несколько частей и запускает их параллельно, а затем объединяет. Если вы просто помните следующую строку кода, вы можете использовать ее во многих местах.

Таким образом, награда за самый быстрый короткий и сладкий код достается -

int[] nums = {1,2,3};
int sum =  Arrays.stream(nums).parallel().reduce(0, (a,b)-> a+b);

Допустим, вы хотите сделать sum of squares, затем Arrays.stream(nums).parallel(). map (x-> x * x).reduce(0, (a, b) → a + b). Идея в том, что вы все еще можете выполнить уменьшение без карты.

Ответ 24

 public class Num1
 {
     public static void main ()
     {
          //Declaration and Initialization
          int a[]={10,20,30,40,50}

          //To find the sum of array elements
          int sum=0;
          for(int i=0;i<a.length;i++)
          {
              sum=sum+i;
          }

          //To display the sum
          System.out.println("The sum is :"+sum);

     }
  } 

Ответ 25

public class AddDemo {

    public static void main(String[] args) {

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

        Scanner S = new Scanner(System.in);

        System.out.println("Enter the Numbers: ");

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

            A.add(S.nextInt());
        }

        System.out.println("You have entered: "+A);

        int Sum = 0;

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

            Sum = Sum + A.get(i);

        }

        System.out.println("The Sum of Entered List is: "+Sum);

    }

}

Ответ 26

В соответствии с 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;
});

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