Выравнивание таблиц
Форматируйте столбцы данных
«Выравнивание таблиц» — бесплатный урок Java Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.
Зачем нужно выравнивание?
При выводе строк данных неровные столбцы трудно читать. В выровненных столбцах числа и подписи аккуратно располагаются друг под другом.
Ширина и флаги printf позволяют создавать аккуратные таблицы прямо в консоли.
Выравнивание по правому краю по умолчанию
Ширина вроде %10s резервирует 10 символов и добавляет заполнение слева, поэтому текст выравнивается по правому краю.
Числа ведут себя так же, поэтому столбцы чисел выравниваются по правому краю.
public class Main {
public static void main(String[] args) {
System.out.printf("[%10s]\n", "hi");
}
}Выравнивание по левому краю с помощью минуса
Добавьте флаг -, чтобы выровнять значение по левому краю поля. %-10s помещает текст слева и добавляет заполнение справа.
Выравнивание по левому краю идеально подходит для подписей и имён.
public class Main {
public static void main(String[] args) {
System.out.printf("[%-10s]\n", "hi");
}
}Два столбца
Объедините подпись, выровненную по левому краю, с числом, выровненным по правому краю, чтобы создать строку. %-10s%5d задаёт ширину имени 10 символов и ширину числа 5 символов.
Используйте один и тот же формат для каждой строки, и столбцы выровняются.
public class Main {
public static void main(String[] args) {
System.out.printf("%-10s%5d\n", "Apples", 3);
System.out.printf("%-10s%5d\n", "Pears", 12);
}
}Простая таблица
Использование одной и той же строки формата для заголовка и каждой строки данных сохраняет выравнивание.
Здесь три строки используют один шаблон, поэтому столбцы остаются аккуратными.
public class Main {
public static void main(String[] args) {
String fmt = "%-8s%6d\n";
System.out.printf(fmt, "Name", 0);
System.out.printf(fmt, "Ann", 90);
System.out.printf(fmt, "Bob", 7);
}
}Выравнивание дробных чисел
Для денежных значений или измерений объедините ширину и точность: %8.2f выравнивает число по правому краю в поле шириной 8 символов с двумя знаками после запятой.
Десятичные разделители в разных строках располагаются вертикально друг под другом.
public class Main {
public static void main(String[] args) {
System.out.printf("%8.2f\n", 5.5);
System.out.printf("%8.2f\n", 123.4);
}
}Заголовок и числа
Сочетайте в одной строке столбцы со строками и числами. Левая подпись и цена, выровненная по правому краю, естественно смотрятся вместе.
Этот шаблон лежит в основе большинства отчётов в консоли.
public class Main {
public static void main(String[] args) {
System.out.printf("%-10s%8.2f\n", "Coffee", 3.5);
System.out.printf("%-10s%8.2f\n", "Cake", 12.0);
}
}Выбор ширины столбцов
Выбирайте ширину не меньше длины самого длинного значения, иначе текст выйдет за границы столбца и нарушит выравнивание.
Если значение шире поля, printf выводит его полностью и игнорирует заданную ширину.
public class Main {
public static void main(String[] args) {
System.out.printf("[%3s]\n", "toolong");
}
}Обход строк в цикле
Цикл и одна общая строка формата упрощают создание целой таблицы.
На каждой итерации выводится одна выровненная строка, поэтому добавление данных не нарушает макет.
public class Main {
public static void main(String[] args) {
String[] names = {"Sun", "Mon", "Tue"};
int[] hrs = {8, 12, 5};
for (int i = 0; i < names.length; i++) {
System.out.printf("%-6s%4d\n", names[i], hrs[i]);
}
}
}Сочетание со String.format
Вы можете создавать каждую выровненную строку с помощью String.format, если текст нужен до его вывода.
Правила ширины и выравнивания остаются теми же.
public class Main {
public static void main(String[] args) {
String row = String.format("%-8s%5d", "Total", 99);
System.out.println(row);
}
}Табуляции и ширина
Можно разделять столбцы с помощью табуляций \t, но позиции табуляции различаются, а длинные значения нарушают выравнивание.
Фиксированная ширина, например %-10s, обеспечивает надёжные и предсказуемые столбцы, поэтому для таблиц лучше использовать её.
Быстрая проверка
Какой формат выравнивает имя по левому краю в поле шириной 12 символов?
Итоги
Вы создали выровненные таблицы с помощью полей ширины, флага - для выравнивания по левому краю и %8.2f для аккуратных столбцов с десятичными числами.
С помощью printf, String.format и выравнивания вы можете аккуратно форматировать любой вывод в консоли.
Изучай Java с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 104
- Уроки
- 374
Часто задаваемые вопросы
Урок «Выравнивание таблиц» бесплатный?
Да — полный текст урока «Выравнивание таблиц» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.
Чему я научусь в уроке «Выравнивание таблиц»?
Форматируйте столбцы данных Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Выравнивание таблиц»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы printf
- Форматы чисел и десятичных дробей
- String.format
- Выравнивание таблиц