Java Integer добавить лидирующие нули? - PullRequest
2 голосов
/ 02 января 2012

Мне нужно добавить ведущие нули в массив для математического использования. В частности, я делаю что-то, чтобы добавить два больших числа. Числа хранятся в виде массива int, где каждый элемент массива состоит из 5 цифр. Одним из примеров является 53498 93784 45891 45982 48933 58947 Мне нужно добавить еще один к этому, скажем, 23584 42389 32479 34289 39281 48237 Чтобы добавить их, я бы взял последние 5 цифр обоих и добавил их 58947 + 48237 Это дает 107184. Затем я устанавливаю значение переноса в 1 и вычитаю 100 000.

Это проблема: Он устанавливает для int значение 7184, а затем сумма говорит ... 882157184 вместо 8821507184, что делает (очень) неверную сумму. Итак, как мне получить массив массива int, чтобы сказать 88215 07184? Если это невозможно, пожалуйста, перечислите другой способ получить тот же результат, возможно, строку вместо массива int? Если это вообще возможно, попробуйте найти способ получить начальный 0 со значением int.

Ответы [ 3 ]

15 голосов
/ 02 января 2012

Рассматривали ли вы использование Java BigInteger класса?

, например

BigInteger quiteBig = new BigInteger("534989378445891459824893358947");
4 голосов
/ 02 января 2012

В значении нет ведущих нулей (если, конечно, вы не говорите о восьмеричных литералах). Внутренне int - это 32 бита, и все.

Вам может понадобиться форматирование. Чтобы обратиться к выводу , вы можете попробовать String.format("%05d", x);, для подробностей см. javadoc

0 голосов
/ 02 января 2012

Вы можете начать с чего-то вроде этого:

class FiveDigitInteger {
  private static final DecimalFormat format = new DecimalFormat("00000");
  final int i;

  public FiveDigitInteger ( int i ) {
    this.i = i;
  }

  public int getInteger () {
    return i;
  }

  public String toString () {
    return format.format(i);
  }
}

и добавьте различные math методы, такие как:

  public FiveDigitInteger add ( int j ) {
    return new FiveDigitInteger ( i + j );
  }

и т.д.

...