wake-up-neo.com

Wie finden Sie die Summe aller Zahlen in einem Array in Java?

Ich habe Probleme, die Summe aller Zahlen in einem Array in Java zu finden. Ich kann dafür keine nützliche Methode in der Klasse Math finden.

103
TomLisankie

In Java-8 können Sie Streams verwenden:

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

Ausgabe:

Die Summe beträgt 150.

Es ist im Paket Java.util.stream

import Java.util.stream.*;
227
msayag

Dies ist eines dieser einfachen Dinge, die (AFAIK) in der Standard-Java-API nicht vorhanden sind. Es ist leicht genug, selbst zu schreiben.

Andere Antworten sind vollkommen in Ordnung, aber hier ist eine für jeden syntaktischen Zucker.

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

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

Ein Beispiel für die Array-Summation ist auch in der Java 7-Sprachspezifikation gezeigt . Das Beispiel stammt aus Section 10.4 - Array Access.

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
wkl

Wenn Sie Java 8 verwenden, stellt die Klasse Arrays eine stream(int[] array) -Methode bereit, die eine sequentielle IntStream mit dem angegebenen int-Array zurückgibt. Es wurde auch für double- und long-Arrays überladen.

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

Es bietet auch eine Methode stream(int[] array, int startInclusive, int endExclusive) , mit der Sie einen bestimmten Bereich des Arrays nehmen können (was nützlich sein kann):

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

Schließlich kann ein Array vom Typ T verwendet werden. Sie können also pro Beispiel eine String haben, die Zahlen als Eingabe enthält, und wenn Sie sie summieren möchten, tun Sie dies einfach:

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

Du kannst nicht Für andere Sprachen gibt es einige Methoden wie array_sum () in PHP, Java jedoch nicht.

Gerade..

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

System.out.println(sum);
18
user434665

In Apache Math: Es gibt StatUtils.sum(double[] arr) 

14
fodon

Der einzige Punkt, den ich zu früheren Lösungen hinzufügen würde, ist, dass ich einen Long-Wert verwenden würde, um die Gesamtsumme zu sammeln, um einen Wertüberlauf zu vermeiden.

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

for (int i : someArray)
    sum += i;
13
Peter Lawrey

Im Java 8

Code :

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

Ausgabe :

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

Erklärung :

Im Java 8, Sie können das Reduktionskonzept verwenden, um Ihre Addition durchzuführen.

Lesen Sie alles über Reduktion

6
Kick Buttowski
int sum = 0;

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

IMHO scheint eine Summenfunktion die Arrays-Klasse zu erweitern, in der füllen, sortieren, suchen, kopieren und gleichwertig sind. Es gibt viele praktische Methoden, die sich in den Javadocs verstecken, daher ist es eine gute Frage, wenn Sie Fortran nach Java portieren, bevor Sie unsere eigene Helper-Methode verwenden. Durchsuchen Sie den riesigen Javadoc-Index nach "sum", "add" und allen anderen Suchbegriffen. Sie könnten vermuten, dass jemand dies bereits für die primitiven Typen int, float, double, Integer, float, double getan hat? Egal wie einfach, es ist immer gut zu überprüfen. Halten Sie den Code so einfach wie möglich und erfinden Sie das Rad nicht neu.

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

Ich mag diese Methode persönlich. Mein Code-Stil ist etwas komisch.

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

Ziemlich einfach im Code zu verwenden:

int[] numbers = { 1, 2, 3, 4, 5 };
sumOf(1);
sumOf(1, 2, 3);
sumOf(numbers);
3
GenuineSounds

Ich benutze das:

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

Du musst deine eigene rollen.
Sie beginnen mit einer Summe von 0. Dann betrachten Sie für jede ganze Zahl im Array die Summe. Wenn Sie keine Zahlen mehr haben, haben Sie die Summe.

Wenn es keine ganzen Zahlen gab, ist die Summe 0.

2
chustar

Aus dieser Übung können Sie zwei Dinge lernen:

Sie müssen die Elemente des Arrays irgendwie durchlaufen - dies können Sie mit einer for-Schleife oder einer while-Schleife tun .. Sie müssen das Ergebnis der Summation in einem Akkumulator speichern. Dazu müssen Sie eine Variable erstellen.

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

Sie können Ihren Code folgendermaßen verbessern:

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
pringlesinn

Es gibt eine sum () - Methode in Underscore-Java library.

Code-Beispiel:

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

Verwenden Sie die folgende Logik

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
vipul gulhane

Es gibt keine 'Methode in einer Matheklasse' für so etwas. Es ist nicht wie eine Quadratwurzelfunktion oder so ähnlich.

Sie müssen nur eine Variable für die Summe haben und das Array durchlaufen, um jeden Wert, den Sie finden, zur Summe hinzuzufügen.

0
jbx
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
Ashok Vunnam
/**
 * Sum of all elements from 1 to 1000
 */
final int sum = Stream.iterate(1, n -> n + 1).limit(1000).mapToInt(el -> el).sum();
0
Jackkobec

Wir können benutzerdefinierte Funktionen verwenden. Initialisieren Sie zunächst die Summenvariable gleich Null. Dann durchqueren Sie das Array und fügen Sie das Element mit der Summe hinzu. Aktualisieren Sie dann die Summenvariable.

Code-Auszug :

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
rashedcs