3

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

这是在 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 - 查看图像链接,然后查看代码。试图将“总计”下方的数字推到左侧。帮助?

4

1 回答 1

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));
于 2017-04-07T21:38:39.613 回答