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