[英]Tabular Format / printf Spacing in Java Assistance
所以这段代码在过去一小时左右一直困扰着我。 基本上,我的程序的一部分任务是以一种表格格式显示数据。 剩下的就是让输出看起来不错,可以这么说。
以下是在printf命令的格式化/语法方面一直困扰我的(示例)代码段:
System.out.printf("%-20s %-20s %-20s %-20s %-20s%n",
"Part #:", "Description:", "Number Sold:", "Price:", "Total:");
System.out.println
("---------------------------------------------------------------------------------------------------------------");
System.out.printf("%-20s %-20s %-20d %s%-20.2f %s%-20.2f%n",
"2304E", "Power Drill", 20, "$",99.99, "$",100*99.99);
事实上,一旦我尝试在NetBeans上运行命令,我似乎在我的输出上得到这个:
虽然这不是完全破解程序或者是一个大问题,但是对于Total:
标题,这个数字上的那个小小的缩进是在困扰我。
我在过去一小时左右的时间里一直试图让“$ 9999.00”的双倍/浮动值与“Total:”标题完全对齐。 任何援助将不胜感激。
tl; dr - 查看Image Link,然后查看代码。 试图将数字右下方“Total”推到左侧。 救命?
%s
额外$
放置在您的列中添加另一个字符,使其比预期的20个字符宽。 因为下一列中的字符向右移动。 如果您希望price
和total
列数始终包含20个字符,则可以
%-20.2f
减少到%-19.2f
(假设%s
只能保存一个字符), "$99,99"
字符串,如String.format("$%.2f",99.99)
并将其用作%-20s
参数(将替换%s%-20.2f
)。 所以你的代码看起来像
System.out.printf("%-20s %-20s %-20d %s%-19.2f %s%-19.2f%n",
"2304E", "Power Drill", 20, "$",99.99, "$",100*99.99);
要么
System.out.printf("%-20s %-20s %-20d %-20s %-20s%n",
"2304E", "Power Drill", 20, String.format("$%.2f",99.99), String.format("$%.2f",100*99.99));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.