Сначала к результирующему номеру оставляются нули, пока длина не будет кратна введенному номеру (fx int a = 3
-> длина номера должна быть кратна числу 3).Затем я должен разделить число на секции длиной a
(т.е. 3
).
Например:
Начиная с int a = 3
и числом: 9056737152
Если число разбивается без начальных нулей, один из результирующих разделов будет иметь длину 1:
9056737152 -> 905 673 715 2
Начиная с 1 <> a
, слева необходимо добавлять нули до тех пор, пока разделение не приведет к тому, что все секции имеют длину a
, т.е.
009056737152 -> 009 056 737 152
009056737152 -> 009 ( секция 1 ) 056 ( секция 2 ) 737 ( секция 3 ) 152 ( секция 4 )
Далее чередующиеся секции необходимо поменять местами, затем все секции сложить вместе.Например, реверсивные секции 2 и 4 :
251 + 737 + 650 + 009 = 1647
Есть идеи?Я на первом этапе, пытаясь добавить нули с помощью:
int num = 5;
DecimalFormat df = new DecimalFormat("00000");
System.out.println(df.format(zahl));
Проблема в том, что число 5
не может быть статическим.
Другой метод:
int number = 9;
String str = String.format("%04d", 9); // 0009
System.out.printf("original number %d, numeric string with padding : %s", 9, str);
- % означает, что это инструкция форматирования.
- 0 - это флаг, который говорит о заполнении нулями.
- 4 обозначает длину отформатированной строки.Это гарантирует, что будет добавлено правильное число нулей
- d для десятичного числа, что означает, что следующий аргумент должен быть целочисленным значением, например, byte, char, short, int или long.
Мне нужно изменить 04 (от форматирования - "%04d"
) до целого числа a
.