所以这段代码在过去一小时左右一直困扰着我。基本上,我的程序任务的一部分是以一种表格格式显示数据。剩下的就是让输出看起来不错,可以这么说。
以下是在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"双/浮值完全对齐"总计:"头。任何帮助将不胜感激。
tl; dr - 查看Image Link,然后查看代码。试图让数字正确,#34; Total"推到左边。帮助
答案 0 :(得分:0)
$
中的额外%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));