Как инициализировать BigInteger после создания мгновений (конструктор не может быть вызван) - PullRequest
12 голосов
/ 03 июля 2011

Представьте себе экземпляр BigInteger, как его инициализировать после создания экземпляра?

Например:

BigInteger t = new BigInteger();

Как поместить значение в t?

Если конструктор не может быть вызван, то что можно сделать, чтобы поместить значение в объект?

Ответы [ 4 ]

9 голосов
/ 03 июля 2011

Я не на 100% уверен в том, что именно вас смущает, поскольку вы инициализируете элементы в массиве BigInteger, как и любой другой массив объектов.например,

  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};

Редактировать 1:
Ах, теперь я понимаю вашу проблему: вы хотите создать экземпляр BigInteger, а затем установить его значение.Ответ тот же, что и для строк: вы не можете , и это потому, что BigIntegers, такие как строки, неизменны и не могут быть изменены после создания.По этой причине в классе нет методов «установки».Чтобы изменить значение переменной BigInteger , нужно установить для него новый экземпляр BigInteger.

5 голосов
/ 03 июля 2011

Чтобы преобразовать long (или обычное целое число) в BigInteger, используйте статический фабричный метод valueOf.Вызов BigInteger.valueOf(<i>someInteger</i>) возвращает новый объект BigInteger, содержащий указанное вами целочисленное значение.Вы также можете использовать новый BigInteger("" + <i>someInteger</i>), чтобы получить то же самое, но это более неудобно.

3 голосов
/ 14 мая 2016

Вот несколько примеров:

    BigInteger t = BigInteger.valueOf(23);
    int i = 66;
    t = BigInteger.valueOf(i);
    t = BigInteger.ZERO
0 голосов
/ 28 июля 2016

Я сделал что-то подобное

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

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