我需要从一个数组中显示带有价格的项目列表,并希望对齐价格。我几乎可以工作,但需要改进。下面是代码和输出。如何使所有价格对齐的想法?到目前为止,一些工作,但一些没有。
//for loop
System.out.printf("%d. %s \t\t $%.2f\n",
i + 1, BOOK_TYPE[i], COST[i]);
输出:
1. Newspaper $1.00
2. Paper Back $7.50
3. Hardcover book $10.00
4. Electronic book $2.00
5. Magazine $3.00
5条答案
按热度按时间9fkzdhlc1#
你可以试试下面的例子。一定要在宽度前使用“-”来确保左缩进。默认情况下它们将右缩进;这可能不符合你的目的。
格式字符串语法:http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax
格式化数字打印输出:https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
PS:这可以作为对DwB的回答的评论,但我仍然没有评论的权限,所以回答它。
nukf8bse2#
我们想到的一个简单解决方案是使用
String
空间块:当打印出一个字符串时,计算实际的缩进并将其添加到末尾:
这将把空格的数目传递给字符串,并把它们放在同一列中。
9vw9lbht3#
printf和类似printf的方法的格式规范有一个可选的width参数。
将宽度调整为所需值。
cunj1qz14#
下面是一个可能的解决方案,它将根据最长的bookTypes值设置bookType列的宽度(即bookTypes值的格式)。
hof1towb5#
你可以参考这个博客打印格式化的彩色文本上控制台
https://javaforqa.wordpress.com/java-print-coloured-table-on-console/