web-dev-qa-db-fra.com

Comment trouvez-vous la somme de tous les nombres d'un tableau en Java?

Je ne parviens pas à trouver la somme de tous les entiers d'un tableau en Java. Je ne trouve aucune méthode utile dans la classe Math pour cela.

103
TomLisankie

Dans Java-8 vous pouvez utiliser des flux:

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

Sortie:

La somme est de 150.

C'est dans le paquet Java.util.stream

import Java.util.stream.*;
227
msayag

C'est l'une de ces choses simples qui n'existent pas (AFAIK) dans l'API Java standard. C'est assez facile d'écrire le vôtre.

Les autres réponses sont très bien, mais voici une solution avec du sucre syntaxique pour chaque.

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

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

En outre, un exemple de sommation de tableau est même indiqué dans la spécification de langage Java 7 . L'exemple est tiré de Section 10.4 - Accès aux tableaux.

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

Si vous utilisez Java 8, la classe Arrays fournit une méthode stream(int[] array) qui retourne une séquence IntStream avec le tableau int spécifié. Il a également été surchargé pour les tableaux double et long.

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

Il fournit également une méthode stream(int[] array, int startInclusive, int endExclusive) qui vous permet de prendre une plage spécifiée du tableau (ce qui peut être utile):

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

Enfin, il peut prendre un tableau de type T. Ainsi, vous pouvez par exemple avoir une String qui contient des nombres en entrée et si vous voulez les additionner, faites simplement:

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

Tu ne peux pas. D'autres langages ont des méthodes pour cela, comme array_sum () en PHP, mais pas Java.

Juste..

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

System.out.println(sum);
18
user434665

Dans Apache Math: Il y a StatUtils.sum(double[] arr) 

14
fodon

Le seul point que j'ajouterais aux solutions précédentes est que j'utiliserais un long pour accumuler le total afin d'éviter tout débordement de valeur.

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
int sum = 0;

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

IMHO, une fonction sum semblerait un bon moyen d'étendre la classe Arrays où remplir, trier, rechercher, copier, et égal à vivre. Il y a beaucoup de méthodes pratiques cachées dans les javadocs, il est donc raisonnable de demander à porter Fortran sous Java avant de lancer notre propre méthode d'assistance. Recherchez dans l'énorme index javadoc "sum", "add" et tout autre mot clé que vous pourriez penser. Vous pensez peut-être que quelqu'un a déjà fait cela pour les types primitifs int, float, double, Integer, Float, Double? Aussi simple soit-il, il est toujours bon de vérifier. Gardez le code aussi simple que possible et ne réinventez pas la roue.

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

J'aime cette méthode personnellement. Mon style de code est un peu bizarre.

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

Assez facile à utiliser dans le code:

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

J'utilise ceci:

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

Vous devez rouler le vôtre.
Vous commencez avec un total de 0. Ensuite, vous considérez pour chaque entier du tableau, vous l'ajoutez à un total. Ensuite, lorsque vous êtes à court d’entiers, vous avez la somme.

S'il n'y a pas d'entiers, le total est 0.

2
chustar

Il y a deux choses à apprendre de cet exercice:

Vous devez parcourir les éléments du tableau d'une manière ou d'une autre - vous pouvez le faire avec une boucle for ou une boucle while .. Vous devez stocker le résultat de la somme dans un accumulateur. Pour cela, vous devez créer une variable.

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

Vous pouvez améliorer l'apparence de votre code comme ceci:

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

Il existe une méthode sum () dans underscore-Java library.

Exemple de code:

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
Valentyn Kolesnikov

Utilisez la logique ci-dessous

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

Il n'y a pas de "méthode dans un cours de maths" pour une telle chose. Ce n'est pas comme si c'était une fonction racine carrée ou quelque chose comme ça.

Vous avez juste besoin d'une variable pour la somme et de parcourir le tableau en ajoutant chaque valeur que vous trouvez à la somme.

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

Nous pouvons utiliser une fonction définie par l'utilisateur. Au début, initialisez la variable somme égale à zéro. Puis traversez le tableau et ajoutez un élément avec sum. Puis mettez à jour la variable somme.

Extrait de code :

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