使用我的printf语句在Java中遇到一点麻烦。我的代码工作正常,因为我用println测试它,我只需要让我的间距正确,这就是我需要使用printf的原因。我尝试过多种方法来间隔和分离我的字符串和变量。我认为问题的一部分是我必须使用“$”,这就是搞乱printf语句。这是学校项目的一部分,这就是为什么我必须使用printf而不是仅仅使用println语句。我的代码如下
for(double ten = 10.00; ten < 15.00; ten = ten + .75){
/**
* We use the variable tip to calculate a %20 tip and we use the
* variable totalWithTip to calculate the total of the dinner price
* and the tip added together.
*/
double tip = ten * .2;
double totalWithTip = ten + tip;
System.out.printf("$%7s%4.2d$%13s%4.2d$%13s%4.2d\n", ten, tip, totalWithTip);
}
我需要输出看起来像
Dinner Price 20% tip Total
---------------------------------------------------
$10.00 $ 2.00 $12.00
$10.75 $ 2.15 $12.90
$11.50 $ 2.30 $13.80
$12.25 $ 2.45 $14.70
$13.00 $ 2.60 $15.60
$13.75 $ 2.75 $16.50
$14.50 $ 2.90 $17.40
答案 0 :(得分:3)
System.out.printf("$%.2f $%.2f $%.2f \n", ten, tip, totalWithTip);
对于double(或float),你只需要%f,.2指定小数位。
对于空格,使用'c'字符,前缀为空格数。例如。 %6c将打印6个字符。
System.out.printf("$%.2f%6c$%.2f%6c$%.2f\n", ten, ' ', tip,' ',totalWithTip);
答案 1 :(得分:2)
在您的情况下,这可能是一个解决方案:
System.out.printf("%7s$%4.2f%13s$ %4.2f%13s$%4.2f\n"," ", ten, " ", tip, " ", totalWithTip);
在您的示例中,空格放在数据之后。此外,你只需要%f表示double(或float),.2指定小数位。
答案 2 :(得分:2)
另一种选择:
System.out.printf("%7s$%-13.2f$%-13.2f$%-13.2f\n", " ", ten, tip, totalWithTip);
' - '将参数的输出对齐到左边,并在右边添加填充字符。