繁体   English   中英

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

[英]Tabular Format / printf Spacing in Java Assistance

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

以下是在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”的双倍/浮动值与“Total:”标题完全对齐。 任何援助将不胜感激。

tl; dr - 查看Image Link,然后查看代码。 试图将数字右下方“Total”推到左侧。 救命?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM