Я просто пытаюсь преобразовать некоторый код 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));
но я надеюсь, что существует немного лучший путь, да?
Предполагая, что индекс вписывается в 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
зависимых символов, таких как ' ', '.' или ', добавленные к выходным данным.