Java printf использование переменного размера поля?

Я просто пытаюсь преобразовать некоторый код C в Java, и я испытываю немного затруднений из-за String.printf.

В C, для получения определенной ширины на основе переменной я могу использовать:

printf("Current index = %*d\n", sz, index);

и это отформатирует целое число, чтобы быть определенным размером на основе sz.

Попытка:

System.out.println(String.format("Current index = %*d\n", sz, index));

результаты по ошибке, так как этому не нравится *.

У меня в настоящее время есть следующий клудж:

System.out.println(String.format("Current index = %" + sz + "d\n", index));

но я надеюсь, что существует немного лучший путь, да?

28
задан paxdiablo 31 March 2010 в 02:41
поделиться

1 ответ

Предполагая, что индекс вписывается в sz, вы можете сделать что-то вроде:

char[] temp = new char[sz];
Arrays.fill(temp, '0');
DecimalFormat df = new DecimalFormat(new String(temp));
System.out.println(String.format("Current index = %s\n", df.format(index))); 

Примечание, не используя Format или любой из его подклассов, нет Locale зависимых символов, таких как ' ', '.' или ', добавленные к выходным данным.

0
ответ дан 28 November 2019 в 03:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: