Java格式化

4
我将尝试格式化一个字符串,使得“$”符号与价格紧密相连。
例如:
Oranges     3     $3.00     $9.00

但是我目前有的是:

Oranges     3 $    3.00 $    9.00

这是我的代码:(注意:"price"和"total"是double数据类型)
System.out.printf("%-25s %10s $%10s $%10s", item, quantity, price, total);

我希望每个输出之间都有一个空格,但我找不到实现我想要的结果的方法。是否有任何解决方法?


3
建议使用Java的本地化格式,而不是自己创建。具体可参考Java的Locale dependent formats - S.D.
3个回答

1
尝试
System.out.printf("%-25s %10s %10s %10s", item, quantity, "$" + price, "$" + total);

输出

Oranges                            3       $3.0       $9.0

或者,最好使用格式化方法。
    String format(double d) {
        return String.format("$%.2f", d);
    }
...
    System.out.printf("%-25s %10s %10s %10s", item, quantity, format(price), format(total));

输出

Oranges                            3      $3.00      $9.00

0

去掉价格和总价的10个空格填充。

System.out.printf("%-25s %10s $%s $%s", item, quantity, price, total);

0

你能把它们转换成字符串输出吗?Double类型可以调用toString()方法,参考这个链接:

http://www.java2s.com/Code/Java/Language-Basics/Convertdoubletostring.htm

然后你可以在每个字符串的顶部输出一个美元符号(如果你将它们加载到数组中,甚至可以循环遍历所有字符串,并向它们添加美元符号)。

这可能不是最好的选择,但我相信它会起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接