我是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
答案 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