Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java辅助中的表格格式/printf间距_Java_Formatting_Printf_System.out_Java Print - Fatal编程技术网

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

Java辅助中的表格格式/printf间距,java,formatting,printf,system.out,java-print,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.p

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

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

放置在
%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);


你为什么不这样结束呢?“…%s%-20.2f%s%-20.2f%n”(去掉中间的空格)?
System.out.printf("%-20s %-20s %-20d %-20s %-20s%n",
        "2304E", "Power Drill", 20, String.format("$%.2f",99.99), String.format("$%.2f",100*99.99));