我一直在寻找很多关于 java 中的 System.out.printf 格式化字符串输出的问题,但我似乎不明白如何使用它。
我正在尝试打印看起来像这样的漂亮专栏
601 GoPro Hero5 Black 276.95
602 GoPro Hero5 Session 199.00
611 Canon EOS Rebel 361.89
但我能得到的最好的就是这个
601 GoPro Hero5 Black 276.95
602 GoPro Hero5 Session 199.00
611 Canon EOS Rebel 361.89
我似乎能够对齐前两个值,但不能对齐第三个值。这是我的代码
System.out.printf("%-1s %10s %10.2f\n", "ex string", "ex string", 276.95);
我认为“-1s”左对齐为负号,1将是第一个和第二个输入之间的空格,然后%10s将相距十个字符,%10.2将相距十个字符,并有两个小数位。所以我尝试做
System.out.printf("%-1s %10s %20.2f\n", "ex string", "ex string", 276.95);
但这仍然没有使第三个值彼此内联。
修改后的尝试使用
System.out.printf("%-10s %-10s %10.2f\n", "ex string", "ex string", 276.95);
结果是...
601 GoPro Hero5 Black 276.95
602 GoPro Hero5 Session 199.00
611 Canon EOS Rebel 361.89
作为记录,我的代码正在获取如下变量:
System.out.printf("%-10s %-10s %10.2f\n", items.get(i).getItemNumber(), items.get(i).getName(), items.get(i).getPrice());