2017-01-16 13 views
2

Я пытаюсь отформатировать строку с использованием Java String.format. Мне нужно создать строку, подобную этой: "<padding spaces> int1/int2".Java string.format общая ширина с несколькими параметрами

Сейчас у меня есть следующий формат: " %1$d/%2$d10" или "%1$d10/%2$" (или только "%1$d/%2$d", без установки ширины), но это работает некорректно. Я хочу, чтобы строка была выровнена вправо, а пустые пробелы были заполнены для общей ширины 10.

Я использую "%1$10.1f" в другом месте моего кода для одного поплавка. Двойные целые числа должны быть заполнены с одинаковой шириной.

У меня обнаружены мои мозги, но я не могу найти способ заполнить общую строку вместо двух отдельных целых чисел. Помощь будет оценена!

+0

Пардон мой мобильный форматирование – kwantuM

ответ

1

Создание двойного целого строки первой помощи:

int one = 1; 
int two = 2; 
String dints = String.format("%d/%d", one, two); 

Затем форматировать строку dints с шириной 10:

String whatYouWant = String.format("%10s", dints); 

печати whatYouWant Выведите:

 1/2 

You также можно сделать это одним вызовом, за счет удобства чтения, например:

String whatYouWant = String.format("%10s", String.format("%d/%d", one, two)); 

Или короче:

String whatYouWant = String.format("%10s", one + "/" + two); 
+0

Таким образом, нет никакого способа сделать это в одном вызове? Кроме того, мне нужно использовать дополнение 9 на втором шаге для того, чтобы строка имела ту же ширину, что и версия с плавающей запятой. Можете ли вы объяснить, почему? Большое спасибо! – kwantuM

+1

Я обновил свой ответ, чтобы ответить на ваш первый вопрос. Я не совсем уверен, почему вы должны использовать прописку 9, возможно, у вас есть пространство перед '% 10s', тогда как я этого не делаю. Таким образом, ваша строка формата ''% 10s '', тогда как моя -'%% 10s''. –

+0

Ошибка была где-то в другом месте. Код работает нормально – kwantuM