2010-12-29 9 views
76

Ich habe ein Problem, die Summe aller Ganzzahlen in einem Array in Java zu finden. Ich kann dafür keine sinnvolle Methode in der Klasse Math finden.Wie finden Sie die Summe aller Zahlen in einem Array in Java?

+11

Ihre eigenen schreiben, wird der Code, es zu tun 2-3 Zeilen lang. – birryree

+1

Leider sind die obigen (und folgenden) "Antworten" "The Java Way": -/Sie könnten die [Functional Java library] (http://www.functionaljava.org/) verwenden, aber es ist so umständlich, damit umzugehen die Java-Syntax. –

+1

Ich weiß, dass diese Frage extrem alt ist, aber die [Antwort von Msayag] (http://Stackoverflow.com/a/17846344/1946345) unten scheint, wie es als die akzeptierte Antwort markiert sein sollte. –

Antwort

2

Sie müssen Ihre eigenen rollen.
Sie beginnen mit insgesamt 0. Dann berücksichtigen Sie für jede Ganzzahl im Array, fügen Sie es zu einem Gesamtwert hinzu. Wenn du keine ganzen Zahlen mehr hast, hast du die Summe.

Wenn es keine ganzen Zahlen waren, dann ist die Gesamt ist 0.

1
define a sum variable = 0 

for each number in array: 
    sum = sum + number 
3
int sum = 0; 

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

Mit einer for-each-Schleife (eingeführt in Java 1.5) können Sie es noch schöner machen. – birryree

17

Sie können nicht. Andere Sprachen haben einige Methoden dafür wie array_sum() in PHP, aber Java nicht.

Gerade ..

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

System.out.println(sum); 
+5

Ich vermisse dich .NET Summe (IEnumerable ) http://msdn.microsoft.com/en-us/library/system.linq.enumerable.sum.aspx –

0

Es gibt keine 'Methode in einem Mathe-Unterricht' für so etwas. Es ist nicht wie eine Quadratwurzelfunktion oder so ähnlich.

Sie müssen nur eine Variable für die Summe und Schleife durch das Array haben, die jeden gefundenen Wert zur Summe addiert.

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

Es gibt zwei Dinge aus dieser Übung zu lernen:

Sie müssen irgendwie durch die Elemente des Arrays iterieren - Sie können dies für Schleife oder einer while-Schleife mit einem tun. Sie müssen das Ergebnis der Summierung 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]; 
} 
29

Dies ist eines dieser einfachen Dinge, die nicht in der Standard-Java-API (AFAIK) existieren. Es ist einfach genug, um Ihre eigenen zu schreiben.

Andere Antworten sind völlig in Ordnung, aber hier ist einer mit einigen 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; 

Auch ein Beispiel für Array Summierung sogar shown in the Java 7 Language Specification. Das Beispiel stammt von Abschnitt 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); 
    } 
} 
2

Sie können Ihren Code besser aussehen wie diese machen:

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

Der einzige Punkt, den ich bisherigen Lösungen hinzufügen würde, ist, dass ich eine lange verwenden würde die Gesamt zu akkumulieren jeden Überlauf des Wertes 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; 
4

IMHO eine Summenfunktion eine gute Passform zu leben der Klasse Arrays zu erweitern, in dem fill, sortieren, suchen, kopieren, & gleich erscheinen würde. Es gibt eine Menge praktischer Methoden, die sich in den Javadocs verstecken, also ist es eine faire Frage, wenn man Fortran nach Java portiert, bevor man unsere eigene Hilfsmethode aufruft. Durchsuchen Sie den riesigen Javadoc-Index nach "sum", "add" und jedem anderen Keyword, das Ihnen einfällt. Sie könnten vermuten, dass jemand dies bereits für primitive 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.

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

    } 
    } 
+0

dude es ist sum = sum + a [i]; –

169

Sobald ist aus (März 2014) Sie werden in der Lage sein Ströme zu verwenden:

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

Ausgang:

Die Summe ist 150.

Es ist im Paket java.util.stream

import java.util.stream.*; 
+0

Was passiert, wenn Array große Zahlen enthält und die Summe nicht im Gültigkeitsbereich liegt? – thanhbinh84

+2

In diesem Fall können Sie LongStream verwenden, entweder als long sum = IntStream.of (a) .asLongStream(). Sum(); oder long sum = LongStream.of (a) .sum(); – msayag

+1

Gibt es einen erheblichen Geschwindigkeitsvorteil bei der Verwendung von Streams? – Mvorisek

3

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

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

Ziemlich einfach in Code zu verwenden:

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

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

0
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

Kopie der vorhandenen Antwort. –

21

Wenn Sie 8 Java verwenden sind, die Arrays Klasse eine stream(int[] array) Methode liefert die eine sequentielle IntStream mit der angegebenen int Array zurückgibt. Es wurde auch für double und long Arrays überlastet.

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

Es stellt auch ein Verfahren stream(int[] array, int startInclusive, int endExclusive), die Sie einen bestimmten Bereich des Arrays zu nehmen erlaubt (die nützlich sein können):

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

Schließlich kann es T einen Array vom Typ nehmen. So können Sie pro Beispiel eine String haben, die Zahlen als Eingabe enthält und wenn man sie fassen will nur tun:

int sum = Arrays.stream("1 2 3 4".split("\\s+")).mapToInt(Integer::parseInt).sum(); 
-1
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); 

    } 

} 
1

Ich benutze diese:

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

C-Programmierer, wie? – towi

3

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

Ausgang:

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

Erklärung:

In Java 8 können Sie Reduktion Konzept verwenden, um Ihre Zusätzlich zu tun.

Read all about Reduction

0

Ab Java 8 Die Verwendung von Lambda-Ausdrücke verfügbar geworden.

sehen:

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

Compact:

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

Bevorzugen:

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

Return oder Druck Summe.

1

Es gibt eine sum() - Methode in underscore-lodash Bibliothek.

Code-Beispiel:

import com.github.underscore.lodash.$; 

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

     System.out.println(sum); 
     // -> 10 
    } 
} 
1

Wir können benutzerdefinierte Funktion verwenden. Zuerst initialisiere die Summenvariable gleich Null. Dann durchqueren Sie das Array und fügen Sie ein Element mit sum ein. Aktualisieren Sie dann die Summenvariable.

Code Snippet:

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