2016-10-26 3 views
0

Ich habe eine Reihe von BigIntegers, und ich möchte sie alle in einen BigInteger hinzufügen. Ich habe die Methode.add() verwendet, aber aus irgendeinem Grund bleibt immer die Summe 0.Loop Hinzufügen von 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); 

Vielen Dank für Ihre Hilfe!

+1

'sum = sum.add (Zahlen [i]);' ' – ArcticLord

+0

BigInteger' unveränderlich ist, so dass es sein muss' sum = sum.add (Zahlen [i]); '- Nebenbei bemerkt:' für (BigInteger-Nummer: Zahlen) {Summe = Summe.Zahl (Zahl); } würde auch funktionieren. – Thomas

Antwort

3

BigInteger ist unveränderlich - Aufruf sum.add(...) tut nichts zu sum aber gibt eine neue BigInteger zurück.

So müssen Sie den Code ändern zu:

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

Oh mein Gott! Wie habe ich das nicht gesehen? So dumm ... danke –

+1

@KarenSarmiento Der Punkt dort ist: du hast das wahrscheinlich nicht gesehen, weil du nicht zu viel Zeit damit verbracht hast, den BigInteger Javadoc zu lesen, oder? Das ist die Sache: wenn Sie anfangen, etwas neues zu verwenden, das Sie vorher nicht benutzt haben ... kann es Ihnen viele von ihnen sparen, um dieses neue Ding zuerst zu studieren. – GhostCat

+0

Nun, das ist cool. Beantworten Sie zuerst die Frage und schließen Sie sie dann als DUP. Ich bin nicht genau sicher, ob die * Gemeinschaft * dies als die beste Reihenfolge betrachten würde ... – GhostCat