格式化方法中的货币?

时间:2013-03-07 20:10:02

标签: java

public String toString() //toString withing Shiftsupervisor class
{
    String employee = name + ", " + iD + ", " + hireDate + ", $" + AnnualSal + ", $" + ProdBonus;
    return employee;
}

在main中:

ShiftSupervisor supervisor1 = new ShiftSupervisor("John Smith", "123-A", "11-15-2005", 48000, 6500);

System.out.println(supervisor1);

我已经在我的toString中添加了“$”,但是我想要输出最后2个双打为48,000和6,500<<加上逗号!

我可以在我的setMethods中执行此操作吗?

2 个答案:

答案 0 :(得分:2)

不要重新发明轮子。使用已经为您处理此问题的NumberFormat#getCurrencyInstance。这是一个例子:

NumberFormat cnf = NumberFormat.getCurrencyInstance(Locale.US);
System.out.println(cnf.format(48000)); // prints $48,000.00

如果您想省略小数部分,只需使用NumberFormat#setMaximumFractionDigits

NumberFormat cnf = NumberFormat.getCurrencyInstance(Locale.US);
cnf.setMaximumFractionDigits(0);
System.out.println(cnf.format(48000)); // prints $48,000

在您的方法中实现:

NumberFormat cnf = NumberFormat.getCurrencyInstance(Locale.US);
String employee = name + ", " + iD +
    ", " + hireDate +
    ", " + cnf.format(AnnualSal) +
    ", " + cnf.format(ProdBonus);

答案 1 :(得分:1)

  

我可以在setMethods中执行此操作吗?

是的,你可以,但你不想。请相信我。

通常,您将原始值(int,double,float)保留在类中,并在get方法中对其进行格式化。这允许您以不同的方式格式化您的类输出以满足不同的需求。

相关问题