Как добавить интервал в вывод консоли

Относительно новичок в java, посещал класс в старшей школе и пока прошел только один урок в колледже, так что простите меня, если это простой вопрос, но я не знал, как найти ответ в Интернете, поскольку я не знаю, как ответьте на вопрос прямо для поиска. Я пытаюсь исправить интервал в выводе моей программы. Программа использует набор массивов для хранения информации о собаках, таких как их name, breed, age и т. д., И распечатывает ее в определенном формате.

Вот как должен выглядеть результат: Как добавить интервал в вывод консоли

Мой вывод распечатывается путем вызова метода printTitle() для печати заголовка над информацией о собаке, а затем с помощью цикла для распечатки информации о каждой собаке. Вот код для printTitle():

void printTitle() {
    System.out.print("Happy Pet Discount Shop\nToday\'s List of Available Pet Dogs For Sale"
            + "\n============================================================================================== = "
            + "\nName\tbreed\tage\tin human age\tRegular price\tDisc rate\tOn sale price"
            + "\n------------------------------------------------------------------------------------------------");
}

Вот код, в котором я вызываю printTitle() и использую цикл для печати информации о собаке. Примечание: printEndOfList() распечатывает кое-что после цикла, с этим нет проблем, но я все равно включу его. Вот код цикла:

dogNames[0].printTitle();

for(int i = 0; i < dogNames.length; i++) {
    System.out.println("\n" + dogNames[i].getName()
            + "\t" + dogBreeds[i].getBreed()
            + "\t" + dogAges[i].getAge()
            + "\t" + dogAges[i].getAIHY() //get age in human years
            + "\t" + dogRP[i].getRP()     //get regular price of dog
            + "\t" + dogDp[i].get_dPct()  //get discount percentage on price of dog
            + "\t" + dogRP[i].getRP()*(1 - dogDp[i].get_dPct()/100) + "\n"); //final price of the dog
}

dogNames[0].printEndOfList();

В качестве примера я сделаю двух собак, вот как выглядит результат, когда я его запускаю:

Happy Pet Discount Shop
Today's List of Available Pet Dogs For Sale
===============================================================================================
Name    breed   age     in human age    Regular price   Disc rate       On sale price
------------------------------------------------------------------------------------------------
Balto   Siberian Husky  8       52      1300.0  25.0    975.0


Scoopy  Great Dane      13      77      1100.0  25.0    825.0


======================== End of List ==============================
Request within for price. Any reasonable offer is considered
We accept cash & credit card no American Express

Итак, код работает, но как я могу выровнять информацию о каждой собаке под заголовком? Все имена собак должны совпадать с Name, все породы собак под breed и так далее. Как мне сделать это для всех собак? Собаки и их информация вводятся пользователем, поэтому в зависимости от того, насколько длинными или короткими являются имена и другая информация, которую они вводят, интервалы выглядят по-разному. Как сделать так, чтобы все было под заголовком?

Возможный дубликат Как я могу создать таблицу с помощью ASCII в консоли?

Matt Ke 18.12.2018 23:42
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Посмотрите на использование System.out.printf

http://www.javawithus.com/tutorial/displaying-text-using-printf-method

Сначала вам нужно определить ширину каждого столбца, а затем вы можете распечатать каждую строку следующим образом:

 System.out.printf("%-10s %-10s %-10s\n", dogNames[i].getName(),  dogBreeds[i].getBreed(), dogAges[i].getAge());

В этом примере в каждом столбце 10 пробелов.

Другие вопросы по теме