2014-02-11 1 views
0

Я пытаюсь добиться даже отступов в моем выходе. Таким образом, даже если строки имеют разную длину, ширина между строками будет продолжать соответствовать. То, что я имею в виду, если я хочу, чтобы напечатать текстовый файл с человека имя, возраст и вес, но я хочу, чтобы отступы оставаться дажеПеременная ширина строк с использованием printf() в PrintWriter

Ryan  1   1 
Alexander 25  180 
Ashish P. 51  217 
Ben  19  130 

Я знаю, что фиксированная ширина не будет работать, так как имя может быть очень длинной или короткой

writer.printf("%s%10d%10d", name, age, weight); 

Я делаю это с помощью PrintWriter.printf(), хотя я предполагаю, что это относится и к System.out.printf() и .format(), а также.

ответ

1

Вы можете попытаться использовать табуляторы для разделения каждого поля (\ t char).

writer.printf("%s\t%d\t%d", name, age, weight); 

Но это не может хорошо работать, если разница между длиной кратчайшего и самое длинное название больше, то размер табуляции. В этом случае вам не повезло, и вам придется реализовать логику самостоятельно.

+0

Да, это был один из первых методов, которые я пробовал, но из-за различной длины, особенно для имени и того факта, что вкладки выполняются в кратных 4, ширина не делится аккуратно, как я хотел. – Nopiforyou

+0

Вы можете перебирать имена и находить самое длинное имя. Затем вычислите длину позиции поля и снова итерации. Печать количества пробелов минус длина поля и само поле. –

Смежные вопросы