web-dev-qa-db-ja.com

Javaの配列内のすべての数の合計をどうやって見つけるのですか?

Javaで配列内のすべての整数の合計を見つけるのに問題があります。私はMathクラスでこれに役立つメソッドを見つけることができません。

113
TomLisankie

Java-8 では、ストリームを使用できます。

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.*;
232
msayag

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();
33
Alexis C.

これは、標準のJava APIにはない(残念ながら)単純なことの1つです。あなた自身のものを書くのは十分簡単です。

他の答えはまったく問題ありませんが、ここにそれぞれの構文糖を使ったものがあります。

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

できません。他の言語には、PHPのarray_sum()のようなメソッドがいくつかありますが、Javaにはありません。

ただ….

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

System.out.println(sum);
18
user434665

Apache Mathでは:StatUtils.sum(double[] arr)があります

15
fodon

私が以前の解決策に追加する唯一のポイントは、値のオーバーフローを回避するために合計を累積するのにlongを使用するということです。

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];
}
6
Bnjmn

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では、リダクションの概念を使って追加することができます。

リダクションについてのすべてを読む

6
Kick Buttowski

私見合計関数は、fill、sort、search、copy、およびequalsが有効であるArraysクラスを拡張するのに適しているように思われます。 javadocには便利なメソッドがたくさん隠れているので、FortranをJavaに移植して独自のヘルパー・メソッドを実行する前に尋ねるのは公平な質問です。巨大なjavadocインデックスで "sum"、 "add"、その他考えられるキーワードを検索してください。あなたは確かに誰かがすでにint、float、double、Integer、Float、Doubleのプリミティブ型に対してこれを行っていると疑うかもしれません。どんなに単純であっても、チェックすることは常に良いことです。コードをできるだけ単純にして、車輪を再発明しないでください。

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

私はこの方法が個人的に好きです。私のコードスタイルは少し変です。

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

私はこれを使う:

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

あなたはあなた自身を転がさなければなりません。
あなたは合計0から始めます。それからあなたは配列の中のすべての整数について考えて、それを合計に加えます。それからあなたが整数の外にいるとき、あなたは合計を持っています。

整数がない場合、合計は0です。

2
chustar

この演習から学ぶべきことが2つあります。

あなたはどういうわけか配列の要素を反復処理する必要があります - あなたはforループまたはwhileループでこれを行うことができます。合計の結果をアキュムレータに保存する必要があります。これには、変数を作成する必要があります。

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

あなたのコードをこのように見栄えよくすることができます。

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

アンダースコア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
    }
}
1

以下のロジックを使う

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

そのようなことのための「数学クラスのメソッド」はありません。それはその平方根関数あるいはそのようなものが好きではありません。

あなたはただ合計のための変数を持っていて、あなたが合計にあなたが見つけるそれぞれの値を加える配列を通してループする必要があります。

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

ユーザー定義関数を使用することがあります。最初に合計変数をゼロに初期化します。それから配列をたどり、sumを使って要素を追加します。その後、合計変数を更新します。

コードスニペット :

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