#java #formatter
#java #форматирование
Вопрос:
Допустим, у вас есть некоторые табличные данные, в которых длина данных может варьироваться, есть ли в классе форматирования возможность автоматической настройки заполнения?
Итак, вместо этого (обратите внимание на столбец A):
columnA columnB
1 34.34
10 34.34
100 34.34
1000 34.34
Вы получаете это (обратите внимание на столбец B):
columnA columnB
1 34.34
10 34.34
100 34.34
1000 34.34
До сих пор я пробовал это, которое просто включает пробелы между %5s %5s, но они статичны и не настраиваются для получения желаемых результатов. У меня сложилось впечатление, что 5 в% 5s автоматически заполнит 5 пробелов
Formatter formatter = new Formatter();
formatter.format("%5s %5s", columnAdata, columnBdata);
Комментарии:
1. Да, эта функциональность присутствует. Немного поэкспериментируйте, и вы сможете легко решить эту проблему.
2. Кстати, что вы пробовали?
Ответ №1:
Это определенно возможно. Способ, который я знаю, — это настроить минимальную ширину для данных в вашем первом столбце. Для этого вы хотите использовать атрибут width в сочетании с выравниванием по левому краю (оба задокументированы в Javadoc). Вот вам начало:
System.out.printf("%-10d %d%n", 1, 100);
System.out.printf("%-10d %d%n", 10, 100);
System.out.printf("%-10d %d%n", 100, 100);
Это печатает:
1 100
10 100
100 100
Формат %-10d %d%n
можно объяснить следующим образом:
%-10d: first field
%: start field
-: left-justify
10: output a minimum of 10 characters
d: format as a decimal integer
%d: second field, using defaults for decimal integer
%n: newline