Java - 格式化多个数组输出

时间:2016-02-02 16:34:32

标签: java arrays formatting

我是java的新手。我试图弄清楚如何格式化程序运行时正在填充的多个数组(感谢用户输入)。

当我打印数组时,它们不会格式化。我会使用“”空格,但数组的输出取决于用户输入的内容。我所拥有的是:

System.out.println("Order Summary:");
        System.out.println();
        System.out.println("Type                   Size          Quantity    Price");
        System.out.println("---------------------------------------------------------");
        for (i = 0; i < boolCount; i++)
        {
            System.out.println(typeArray[i] + sizeArray[i] + quantityArray[i] + priceArray[i]); //How to format?
        }

将打印出没有空格的数组中的任何内容。 typeArray,sizeArray和priceArray是String数组,而quantityArray是整数数组。

我可能需要做System.out.printf(在这里输入代码),但我不知道如何使用数组。任何帮助将不胜感激。

编辑:如果我在数组之间添加“\ t”,这就是我得到的:

System.out.println(typeArray[i] + "\t\t" + sizeArray[i] + "\t" + quantityArray[i] + "\t" + priceArray[i]);

Order Summary:
Type                   Size          Quantity    Price
---------------------------------------------------------
BBQ Chicken     Large   2   $25.98
Chicken-Bacon Ranch     Personal    22  $175.78
Meat Lovers     Extra Large 33  $791.67

Order total: $993.43

---------------------------------------------------

编辑:这就是我所得到的:

System.out.printf("%-23.23s %-14.14s %-12.12d %-5.5s", typeArray[i], sizeArray[i], quantityArray[i], priceArray[i]);

Order Summary:

Type                   Size          Quantity    Price
---------------------------------------------------------
Exception in thread "main" java.util.IllegalFormatPrecisionException: 12
    at java.util.Formatter$FormatSpecifier.checkInteger(Formatter.java:2984)
    at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2729)
    at java.util.Formatter.parse(Formatter.java:2560)
    at java.util.Formatter.format(Formatter.java:2501)
    at java.io.PrintStream.format(PrintStream.java:970)
    at java.io.PrintStream.printf(PrintStream.java:871)
    at pizzamenu.PizzaMenu.main(PizzaMenu.java:372)
Java Result: 1

1 个答案:

答案 0 :(得分:1)

您可以使用格式说明符。

格式说明符遵循以下格式:

%[flags][width][.precision][argsize]typechar

因此,在您的情况下,您将执行以下操作:

System.out.printf("%-23s %-14s %-12d %-5s", typeArray[i], sizeArray[i], quantityArray[i], priceArray[i]);

有关格式说明符的更多信息: https://sharkysoft.com/archive/printf/docs/javadocs/lava/clib/stdio/doc-files/specification.htm