Класс форматирования Java, есть ли простой способ автоматически заполнять столбцы пробелами?

#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