Формат вывода числа в System.out.printf
Например, я хочу, чтобы число занимало 10 символов (%10d) и при любом обстоятельстве состояло из 3 цифр(%03d). Так вот, как мне совместить эти две операции?
Ответы (3 шт):
Автор решения: Aziz Umarov
→ Ссылка
Я думаю как-то так
System.out.printf(" %03d");
10 символов последние %03d
Или по другому
String empty = " ";
empty = empty.repeat(7);
System.out.printf(empty+ "%03d", 3);
Автор решения: entithat
→ Ссылка
Сделали из двух частей, как Вы в принципе и думали.
System.out.printf("%7s", String.format("%03d", 22));
// 022
Либо, чтобы удобнее было указать промежутки:
int l = 7, n = 2;
System.out.printf("%" + l + "s", String.format("%0" + n + "d", 2));
// 02
Автор решения: gil9red
→ Ссылка
Настраиваемая длина:
static String getFormatNumber(int number, int zeros, int spaced) {
String zerosNumber = String.format("%0" + zeros + "d", number);
return String.format("%" + spaced + "s", zerosNumber);
}
public static void main(String[] args) throws Exception {
System.out.println(getFormatNumber(12, 3, 10));
// 012
System.out.println(getFormatNumber(12, 5, 10));
// 00012
}