Как центрировать вывод строки, используя printf () и переменную ширину? [Джава] - PullRequest
3 голосов
/ 26 апреля 2010

Я создаю вывод в Java, используя printf () для создания заголовков таблицы. Один из столбцов нуждается в переменной ширине.

В основном это должно выглядеть так:

//two coords
Trial    Column Heading
1        (20,30)(30,20)
//three coords
Trial        Column Heading
1        (20,40)(50,10)(90,30)

Я пытался использовать:

int spacing = numCoords * 7; //size of column
printf("Trial    %*^s", column, "Column Heading");

Но я получаю ошибки вывода, когда пытаюсь использовать * или ^ в выражении преобразования.

Кто-нибудь знает, какой должна быть правильная строка форматирования?

Ответы [ 3 ]

6 голосов
/ 26 апреля 2010

Используйте StringUtils.center из библиотеки Commons Lang :

StringUtils.center(column, "Column Heading".length());
3 голосов
/ 26 апреля 2010

Java не поддерживает спецификатор формата "*". Вместо этого вставьте ширину непосредственно в строку формата:

int spacing = numCoords * 7; //size of column
System.out.printf("Trial    %" + spacing + "s", "Column Heading");
0 голосов
/ 26 апреля 2010

В Java используйте System.out.println ()

В соответствии с вашими требованиями, вы должны использовать что-то вроде

System.out.println("Trial"+getSpacer(spacing)+"Column Heading");

Здесь getSpacer (int пробелы) вернет вам строку с таким количеством пробелов, сколько вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...