2013-03-07 58 views
2
public String toString() //toString withing Shiftsupervisor class 
{ 
    String employee = name + ", " + iD + ", " + hireDate + ", $" + AnnualSal + ", $" + ProdBonus; 
    return employee; 
} 

主:格式化方法中的貨幣?

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

System.out.println(supervisor1); 

我已經加入我的toString「$」,但我想這是輸出的最後2個雙打48,000 6500 < <在逗號加入!

我可以在我的setMethods中做這個嗎?

+0

對不起,我不不明白要求是什麼 – 2013-03-07 20:12:23

+0

如果我是你,我可能會考慮將你的貨幣金額存儲爲整數(代表美分,例如200是$ 2.00)是否可行。如果你對這些數字進行某種算術運算,那麼做到這一點可能是不可行的,但這樣做會使數字更加具體,並使字符串操作更容易。 – 2013-03-07 20:15:29

+0

如果您發現問題的答案很好,請點擊答案主體旁邊的向上/向下箭頭旁邊的檢查,將其標記爲已接受。 – 2013-03-07 20:45:16

回答

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

@SotiriosDelimanolis我想現在你的靈魂可以休息了。 – 2013-03-07 20:27:57

+0

就是這樣,謝謝! – 2013-03-07 21:25:00

1

我可以在我的setMethods中做這個嗎?

是的,你可以,但你不想。相信我這一個。

通常,您將原始值(int,double,float)保存在您的類中,並將它們格式化爲get方法。這使您可以根據不同的需要以不同的方式格式化您的課程輸出。