Come si trova la somma di tutti i numeri in un array in Java?


Ho un problema a trovare la somma di tutti gli interi in un array in Java. Non riesco a trovare alcun metodo utile nella classe Math per questo.

Author: james.garriss, 2010-12-29

24 answers

In java-8 è possibile utilizzare i flussi:

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

Uscita:

La somma è 150.

È nel pacchetto java.util.stream

import java.util.stream.*;
 198
Author: msayag, 2018-03-17 16:04:53

Questa è una di quelle cose semplici che non (AFAIK) esiste nell'API Java standard. È abbastanza facile scrivere il tuo.

Altre risposte sono perfettamente a posto, ma eccone una con un po ' per ogni zucchero sintattico.

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

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

Inoltre, un esempio di somma di array è anche mostrato nella specifica del linguaggio Java 7. L'esempio è daSezione 10.4 - Accesso all'array .

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);
    }
}
 30
Author: wkl, 2013-09-04 17:01:54

Se si utilizza Java 8, il Arrays classe fornisce un stream(int[] array) metodo che restituisce un sequenziale IntStream con l'array int specificato. È stato anche sovraccaricato per gli array double e long.

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

Fornisce anche un metodo stream(int[] array, int startInclusive, int endExclusive) che ti permette di prendere un intervallo specificato dell'array (che può essere utile):

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

Infine, può richiedere una matrice di tipo T. Quindi puoi ad esempio avere un String che contiene numeri come input e se vuoi sommarli basta fare:

int sum = Arrays.stream("1 2 3 4".split("\\s+")).mapToInt(Integer::parseInt).sum();
 24
Author: Alexis C., 2013-12-31 20:42:04

Non puoi. Altre lingue hanno alcuni metodi per questo come array_sum () in PHP, ma Java no.

Solo..

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

System.out.println(sum);
 17
Author: user434665, 2010-12-29 00:50:33

L'unico punto che aggiungerei alle soluzioni precedenti è che userei un long per accumulare il totale per evitare qualsiasi overflow di valore.

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

for (int i : someArray)
    sum += i;
 14
Author: Peter Lawrey, 2010-12-29 08:13:32

In Apache Math : c'è StatUtils.sum(double[] arr)

 12
Author: fodon, 2016-07-24 21:01:29

In Java 8

Codice :

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

Uscita :

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

Spiegazione :

In Java 8, è possibile utilizzare il concetto di riduzione per eseguire l'aggiunta.

Leggi tutto sulla Riduzione

 5
Author: Kick Buttowski, 2014-09-15 02:45:44
int sum = 0;

for (int i = 0; i < yourArray.length; i++)
{
  sum = sum + yourArray[i];
}
 4
Author: Bnjmn, 2010-12-29 00:40:36

IMHO una funzione sum sembrerebbe una buona misura per estendere la classe Array dove riempire, ordinare, cercare, copiare, & uguale a vivere. Ci sono molti metodi pratici nascosti nei javadocs, quindi è una domanda giusta quando si esegue il porting di Fortran su java per chiedere prima di lanciare il nostro metodo di supporto. Cerca nell'enorme indice javadoc "somma", "aggiungi" e qualsiasi altra parola chiave a cui potresti pensare. Potresti sospettare che qualcuno lo abbia già fatto per i tipi primitivi int, float, double, Integer, Float, Double? Non importa quanto sia semplice, è sempre bene controllare. Mantieni il codice il più semplice possibile e non reinventare la ruota.

 4
Author: Darrell, 2013-01-16 19:59:02
int sum = 0;
for (int i = 0; i < myArray.length; i++)
  sum += myArray[i];
}
 3
Author: , 2010-12-29 00:41:37

Mi piace questo metodo personalmente. Il mio stile di codice è un po ' strano.

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

Abbastanza facile da usare nel codice:

int[] numbers = { 1, 2, 3, 4, 5 };
sumOf(1);
sumOf(1, 2, 3);
sumOf(numbers);
 3
Author: GenuineSounds, 2013-08-31 07:28:58

Devi rotolare il tuo.
Si inizia con un totale di 0. Quindi consideri per ogni intero nell'array, aggiungilo a un totale. Poi, quando hai finito gli interi, hai la somma.

Se non ci sono numeri interi, il totale è 0.

 2
Author: chustar, 2010-12-29 00:38:50

Ci sono due cose da imparare da questo esercizio:

È necessario scorrere gli elementi dell'array in qualche modo - è possibile farlo con un ciclo for o un ciclo while. È necessario memorizzare il risultato della somma in un accumulatore. Per questo, è necessario creare una variabile.

int accumulator = 0;
for(int i = 0; i < myArray.length; i++) {
    accumulator += myArray[i];
}
 2
Author: Amir Afghani, 2010-12-29 00:42:50

Puoi rendere il tuo codice più simile a questo:

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
Author: pringlesinn, 2010-12-29 01:54:16
define a sum variable = 0

for each number in array:
    sum = sum + number
 1
Author: Noel M, 2010-12-29 00:39:44
 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);

     }
  } 
 1
Author: BLaaaaaa, 2013-07-21 05:43:23

Possiamo usare la funzione definita dall'utente. In un primo momento inizializzare variabile somma uguale a zero. Quindi attraversare la matrice e aggiungere elemento con somma . Quindi aggiornare la variabile sum.

Frammento di codice:

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);
    }
}
 1
Author: rashedcs, 2017-09-10 05:47:34

Io uso questo:

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;
}
 1
Author: jsanmarb, 2018-01-09 13:12:12

Esiste un metodo sum() nella libreria underscore-java.

Esempio di codice:

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
    }
}
 1
Author: Valentyn Kolesnikov, 2018-07-09 10:23:21

Non esiste un 'metodo in una classe matematica' per tale cosa. Non è come se fosse una funzione radice quadrata o qualcosa del genere.

Devi solo avere una variabile per la somma e scorrere l'array aggiungendo ogni valore trovato alla somma.

 0
Author: jbx, 2010-12-29 00:40:50
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 
     }
} 
 0
Author: Ashok Vunnam, 2013-10-27 06:03:34
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);

    }

}
 0
Author: TRC, 2014-09-15 03:13:11

A partire da Java 8 L'uso delle espressioni lambda è diventato disponibile.

Vedi questo:

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

Compatto:

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

Preferisce:

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

Restituisce o stampa somma.

 0
Author: WIll, 2017-02-06 19:47:56

Usa la logica a soffietto

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
Author: vipul gulhane, 2018-08-16 14:02:11