2016-10-26 8 views
0

BigIntegerの配列があります。それらをすべて1つのBigIntegerに追加します。私は)(method.addを使用しましたが、いくつかの理由で、合計は常に0Loop BigIntegerを追加するJava

BigInteger[] numbers = { 
       new BigInteger("20849603980134001723930671666823555245252804609722"), 
       . 
       . 
       . 
       new BigInteger("53503534226472524250874054075591789781264330331690") 
     }; 


BigInteger sum = new BigInteger("0"); 

     for(int i = 0; i < numbers.length; i++) { 
      sum.add(numbers[i]); 
      System.out.println(numbers[i]); 
      System.out.println(sum); 
     } 
     System.out.println(sum); 

はあなたの助けをありがとうまま!

+1

'合計= sum.add(番号[i])と、それは'合計= sum.addする必要がありますので、 '' – ArcticLord

+0

BigInteger'は不変です(numbers [i]); ' - サイドノート:' for(BigInteger number:numbers){sum = sum.add(number); } 'も同様に動作します。 – Thomas

答えて

3

BigIntegerは不変です - sum.add(...)を呼び出してもsumには何も起きませんが、新しいBigIntegerを返します。

だから、あなたがあなたのコードを変更する必要があります。

sum = sum.add(numbers[i]); 
+1

ああ私のゴシ!どのように私はそれを見ませんでした。だから愚かな...ありがとう –

+1

@KarenSarmientoポイントはあります:BigInteger Javadocを読んであまり時間を費やさなかったので、あなたはおそらくそれを見ていませんでしたか?それはそうです:新しいものを使い始めると、以前は使っていなかったものがあります。新しいものを最初に勉強するために、たくさんの人を救うことができます。 – GhostCat

+0

さて、それはクールだ。最初に質問に答えて、DUPとして閉じます。私は、コミュニティがこれを最高の注文とみなすかどうかは確かではありません。 – GhostCat