2012-02-03 3 views
-1

У меня есть 6-значное целое число.
Как я могу поднять каждый индивидуальный номер, чтобы каждое число увеличивалось или уменьшалось на 2?реализация алгоритма приращение целочисленных цифр в java

напр. «999999» на «111111»

Я думал, может быть spliting число на части, а затем конкатенации его обратно.

+1

Если вы хотите, чтобы люди нашли время, чтобы ответить на ваши вопросы, пожалуйста, найдите время, чтобы принять ответы. (Нажмите на галочку рядом с лучшим ответом.) –

+0

Теперь я пытаюсь найти способ сделать это с помощью оператора%. – user1074989

+0

Я бы не назвал этот «сдвиг», потому что это не сдвиг. Во всяком случае, я недавно столкнулся с проблемой разделения целого на свои цифры на Java и нашел, что это довольно сложно выполнить –

ответ

1

Может быть более эффективным способом, но если вы имеете дело только с 6-значным номером, проблема с производительностью пренебрежимо мала.

Итерации над цифрами [с использованием операторов% и/на исходном номере] и для каждой цифры вычислить значение +2 [с% 10] и добавить его к новому номеру с соответствующим показателем.

int x = 999999; 
int $ = 0; 
int exp = 0; 
while (x > 0) { 
    int t = ((x % 10) +2) %10; 
    $ += Math.pow(10, exp++) *t; 
    x /= 10; 
} 
System.out.println($); 

Примечание: оно будет разрываться, если число неявно содержит нули слева [т. если 123 следует преобразовать в 222345]. Вы можете позаботиться об этом, итерации в то время как (exp < 6) вместо (x > 0)

1

Это не математическая операция или «сдвиг» в поразрядном смысле. Это проблема преобразования строк. Я рекомендую вам:

  1. превратить целое число в строку
  2. превратить строку в массив символов (десятичных цифр),
  3. изменения цифр в массиве,
  4. превратить массив обратно в строку, и
  5. превратить строку в целое число

Если номер предоставляется в виде строки, вы можете пропустить первые и последние шаги.