Формат вывода числа в 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
}
→ Ссылка