web-dev-qa-db-fra.com

Comment initialiser BigInteger après avoir créé des instants (le constructeur ne peut pas être appelé)

Imaginez une instance de BigInteger, puis comment l’initialiser après avoir créé une instance?

Par exemple:

BigInteger t = new BigInteger();

Comment mettre une valeur dans t?

Si le constructeur ne peut pas être appelé, que peut-on faire pour mettre la valeur dans l'objet?

12
CoolEulerProject

Je ne suis pas sûr à 100% de ce qui vous trouble spécifiquement lorsque vous initialisez les éléments du tableau BigInteger comme vous le feriez avec tout autre tableau d'objets. par exemple.,

  BigInteger t2 [] = new BigInteger[2];

  t2[0] = new BigInteger("2");
  t2[1] = BigInteger.ZERO; // ZERO, ONE, and TEN are defined by constants

  // or

  BigInteger[] t3 = {new BigInteger("2"), BigInteger.ZERO};

Modifier 1:
Ah, je comprends maintenant votre problème: vous voulez créer une instance de BigInteger et définir ensuite sa valeur. La réponse est la même que pour Strings: vous ne pouvez pas , et c'est parce que BigIntegers, comme Strings, est immuable et ne peut pas être modifié une fois créé. Pour cette raison, la classe n'a pas de méthode "setter". Pour modifier la valeur d'un BigInteger variable, vous devez lui attribuer une nouvelle instance BigInteger.

Pour convertir un entier long (ou un entier régulier) en BigInteger, utilisez la méthode de fabrique statique valueOf. L'appel BigInteger.valueOf(<i>someInteger</i>) renvoie un nouvel objet BigInteger contenant la valeur entière que vous spécifiez. Vous pouvez également utiliser new BigInteger("" + <i>someInteger</i>) pour obtenir la même chose, mais cela est plus compliqué.

5
ncmathsadist

voici quelques exemples:

    BigInteger t = BigInteger.valueOf(23);
    int i = 66;
    t = BigInteger.valueOf(i);
    t = BigInteger.ZERO
3
Mauro Zallocco

J'ai fait quelque chose comme ça

//initialize with zero
BigInteger t = BigInteger.ZERO;

//if i is any value that is to be assigned 
t=t.add(BigInteger.valueOf(i));
0
Nikhil Nagaraju