Java辅助中的表格格式/ printf间距

时间:2017-04-07 21:24:25

标签: 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:标题下的数字右边的小缩进对我来说很烦人。

我在过去一小时左右的时间里一直试图获得" $ 9999.00"双/浮值完全对齐"总计:"头。任何帮助将不胜感激。

tl; dr - 查看Image Link,然后查看代码。试图让数字正确,#34; Total"推到左边。帮助

1 个答案:

答案 0 :(得分:0)

放置在$中的

额外%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));