java - 如何为控制台输出添加间距

标签 java arrays format output

对java相对较新,在高中上过一门课,到目前为止只在大学上过一门课,所以如果这是一个简单的问题,请原谅我,但我不知道如何在网上找到答案,因为我不知道如何正确地表达问题以供搜索。我试图修复程序输出中的间距。该程序使用一堆数组来存储狗的信息,例如它们的名称品种年龄等,并以特定格式将其全部打印出来。

输出应如下所示: output

我的输出是通过调用方法 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();

作为一个例子,我将做 2 只狗,这是我运行它时的输出:

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 个空格。

关于java - 如何为控制台输出添加间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53842078/

相关文章:

Java Postfix 计算器错误

Java JDBC : connect cannot be resolved error

c# - .NET 中的货币格式在金额和货币之间提供空白

MatLab 单元格日期格式转换

java - 有没有类似 Codecademy for Java 的东西

java - grgit NoClassDefFoundError

java - 如何实现List<T>到T[]转换的通用方法?

arrays - 对于字符串数组中最长的公共(public)前缀字符串,此解决方案的时间复杂度是多少?

arrays - 如何用给定的值(不是对象引用)填充数组?

php - 将自定义西类牙日期时间格式转换为 MySQL 时间戳而不截断