Относительно новичок в 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 и так далее. Как мне сделать это для всех собак? Собаки и их информация вводятся пользователем, поэтому в зависимости от того, насколько длинными или короткими являются имена и другая информация, которую они вводят, интервалы выглядят по-разному. Как сделать так, чтобы все было под заголовком?




Посмотрите на использование 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 пробелов.
Возможный дубликат Как я могу создать таблицу с помощью ASCII в консоли?