Java - 格式化多个数组输出

标签 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 是字符串数组,而 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

最佳答案

您可以使用格式说明符。

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

%[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

关于Java - 格式化多个数组输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158880/

相关文章:

java - Jnetpcap:安装错误

c++ - 顺时针旋转二维数组

arrays - 为什么我不能使用 "helper"变量更新数组中的对象?

java - 从java中的字符串解析带有正/负前缀的数字

java - 无法在 Fragment 中调用 getChildFragmentManager

java - 在.aar文件Android中添加gradle依赖项(build.gradle)

java - 在java中为系统外观添加一些东西

javascript - 如何在数组对象中用空字符串替换未定义的值?

python - 使用指定的十进制位数格式化 pandas 数据框的数字列

java - 在 Netbeans/Eclipse 中格式化 Java 代码,但保存方式不同