所以这段代码在过去一个小时左右一直困扰着我。基本上,我程序的部分任务是以表格格式显示数据。唯一剩下的就是让输出看起来不错,可以这么说。
这是一段(示例)代码,在 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:
header 下方数字上的小缩进让我很烦。
在过去一个小时左右的时间里,我一直在尝试让“$9999.00” double /浮点值与“Total:”标题完全对齐。如有任何帮助,我们将不胜感激。
tl;dr - 查看图像链接,然后查看代码。试图将“总计”下方的数字推到左侧。帮忙?
最佳答案
放置在 %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));
关于java - Java 帮助中的表格格式/printf 间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43287293/