java - Java 帮助中的表格格式/printf 间距

标签 java formatting printf system.out java-print

所以这段代码在过去一个小时左右一直困扰着我。基本上,我程序的部分任务是以表格格式显示数据。唯一剩下的就是让输出看起来不错,可以这么说。

这是一段(示例)代码,在 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 上运行命令,我的输出似乎就会得到这个:

enter image description here

虽然这并不完全破坏程序或有什么大不了的,但 Total: header 下方数字上的小缩进让我很烦。


在过去一个小时左右的时间里,我一直在尝试让“$9999.00” double /浮点值与“Total:”标题完全对齐。如有任何帮助,我们将不胜感激。

tl;dr - 查看图像链接,然后查看代码。试图将“总计”下方的数字推到左侧。帮忙?

最佳答案

放置在 %s 中的额外 $ 正在向您的列添加另一个字符,这使得它比预期的 20 个字符更宽。因为下一列中的字符向右移动。如果您希望 pricetotal 列始终包含 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/

相关文章:

PHP sprintf 被认为是有害的?

html - 在转义中仅转义特定标签

java - 如何减少工具提示文本弹出延迟?

java - 使用PropertySourcesPlaceholderConfigurer?

java - 我如何设置 Jframe 窗口的默认外观

c# - 像 Stack Overflow 一样格式化数字(用 K 后缀四舍五入到千位)

formatting - 直播功能 - ExpressionEngine

c - IP DSCP = 8 使IP总长度为7位数字

linux - 目录中的占位符 - awk 中的 printf

java - "concat"这个词实际上或最初是什么意思?