Java-格式化多数组输出

Java-格式化多数组输出,java,arrays,formatting,Java,Arrays,Formatting,我是java新手。我试图弄清楚如何格式化程序运行时填充的多个数组(感谢用户输入) 当我打印数组时,它们不会格式化。我会使用“”空格,但数组的输出取决于用户输入的内容。我得到的是: System.out.println("Order Summary:"); System.out.println(); System.out.println("Type Size Quantity Price");

我是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?
        }
编辑:这就是我得到的:

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
System.out.printf(“%-23.23s%-14.14s%-12.12d%-5.5s”,类型数组[i],大小数组[i],数量数组[i],价格数组[i]);
订单摘要:
型号尺寸数量价格
---------------------------------------------------------
线程“main”java.util.IllegalFormatPrecisionException中的异常:12
位于java.util.Formatter$FormatSpecifier.checkInteger(Formatter.java:2984)
位于java.util.Formatter$FormattSpecifier。(Formatter.java:2729)
位于java.util.Formatter.parse(Formatter.java:2560)
位于java.util.Formatter.format(Formatter.java:2501)
位于java.io.PrintStream.format(PrintStream.java:970)
位于java.io.PrintStream.printf(PrintStream.java:871)
在pizzamenu.pizzamenu.main(pizzamenu.java:372)
Java结果:1

您可以使用格式说明符

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

%[flags][width][.precision][argsize]typechar
因此,在您的情况下,您将执行以下操作:

System.out.printf("%-23s %-14s %-12d %-5s", typeArray[i], sizeArray[i], quantityArray[i], priceArray[i]);
有关格式说明符的详细信息:

您能尝试在值之间添加制表符“\t”吗?实际上,我没有想到,请给我一秒钟时间来尝试如何定义最大字段长度n,编写一个方法,将其填充到n或截断到n,然后将这些长度修改过的标记与空格连接起来?我试图做的是在用户订购比萨饼后生成订单摘要。一些“特色比萨饼”的名称长/短,这会弄乱代码之间的“\t”,将编辑答案以显示我认为这就是答案。在运行期间给了我一大堆错误,我需要导入类吗?您说typeArray和sizeArray是字符串数组,quantityArray是int数组,priceArray是双数组?typeArray、sizeArray和priceArray都是字符串数组。quantityArray是int。priceArray是字符串数组,因为我正在将“$”添加到priceArray[I]。我可以很容易地将其更改为双数组,并单独打印“$”,如果这样做会更容易哦,好吧,我只是假设价格是双数组。我将
priceArray[I]
的类型更改为字符串。仍然给我错误。线程“main”java.util.IllegalFormatConversionException中的异常:f!=java.lang.Integer+其他。
System.out.printf("%-23s %-14s %-12d %-5s", typeArray[i], sizeArray[i], quantityArray[i], priceArray[i]);