【问题标题】:How to add spacing to console output如何在控制台输出中添加间距
【发布时间】:2018-12-18 22:31:51
【问题描述】:

对java比较陌生,高中上过一门课,大学到目前为止只上过一节课,如果这是一个简单的问题,请见谅,但我不知道如何在网上找到答案,因为我不知道知道如何正确地为搜索提出问题。我试图修复程序输出中的间距。该程序使用一堆数组来存储狗的信息,例如它们的namebreedage 等,并以特定格式打印出来。

以下是输出的样子:

我的输出是通过调用方法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 下排列,以此类推。我如何为所有的狗做到这一点?狗和他们的信息是由用户输入的,所以根据他们输入的名字和其他信息的长短,间距看起来会有所不同。如何始终将其排列在标题下方?

【问题讨论】:

标签: java arrays format output


【解决方案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 个空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 2016-01-07
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2011-06-07
    • 1970-01-01
    相关资源
    最近更新 更多