Java中的Printf问题

时间:2016-10-17 14:50:37

标签: java printf

使用我的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

3 个答案:

答案 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);

' - '将参数的输出对齐到左边,并在右边添加填充字符。