154 votes

Java : Comment utiliser BigInteger ?

J’ai ce morceau de code qui ne fonctionne pas :

La variable sum est toujours 0. Ce que je fais mal ?

207voto

MarkPowell Points 11394

BigInteger est immuable. Par conséquent, vous ne pouvez pas changer sum , vous devez réaffecter le résultat de l' add méthode sum .

 sum = sum.add(BigInteger.valueOf(i));
 

En outre, réévaluez votre besoin de BigInteger , une simple primitive int peut suffire.

58voto

Bozho Points 273663
 sum = sum.add(BigInteger.valueOf(i))
 

La classe BigInteger est immuable, vous ne pouvez donc pas changer son état. Donc, appeler "ajouter" crée un nouveau BigInteger , plutôt que de modifier le courant.

23voto

Dean J Points 10987

D'autres réponses ont été obtenues. BigInteger est immuable. Voici le changement mineur pour que ce code fonctionne.

 BigInteger sum = BigInteger.valueOf(0);
for(int i = 2; i < 5000; i++) {
    if (isPrim(i)) {
        sum = sum.add(BigInteger.valueOf(i));
    }
}
 

12voto

Poindexter Points 1784

BigInteger est une classe immuable. Donc, chaque fois que vous faites de l'arithmétique, vous devez réaffecter la sortie à une variable.

12voto

Arvind Points 728

java.math.BigInteger est une classe immuable , nous ne pouvons donc pas affecter de nouvel objet à l'emplacement d'un objet déjà affecté. Mais vous pouvez créer un nouvel objet pour assigner une nouvelle valeur comme:

 sum = sum.add(BigInteger.valueOf(i));
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X