2016-01-31 15 views
-2

對於我的一項任務,我需要以特定間隔方式格式化一行字符串和整數。所有的字符串和整數都是通過get方法訪問的對象的數據字段。格式化一行字符串和整數

getId返回六位整數,getName返回一個字符串的姓和名,getAge返回一個整數,getGPA返回翻倍到3位小數。

我的導師告訴我使用DecimalFormat類,我嘗試了幾次,但是我一直無法弄清楚如何因爲字符串,而且我一直得到一個錯誤,說Cannot format given Object as a Number

我不確定如何將字符串作爲DecimalFormat的一部分,因爲他給我們提供的所有示例都將0放在數字的前面或格式化貨幣格式的數字。我如何重寫我的DecimalFormat以匹配下面的示例輸出? enter image description here

這是打印出行和錯誤的代碼。

System.out.println(format.format(temp.getID() + " " +temp.getName() + " " + temp.getAge() + " " + temp.getGPA())); 

enter image description here

+0

你可能想看看[格式化字符串](http://www.homeandlearn.co.uk/java/java_formatted_strings.html)的一些更多的想法。 getID'實際返回的是什麼?什麼是'格式'?考慮提供一個[可運行的示例](https://stackoverflow.com/help/mcve),它可以證明你的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這會減少混淆和更好的響應 – MadProgrammer

+0

使用'printf'替代,這裏是一個整潔的方便的tuto:https://youtu.be/moQ3Kr8ouiU – Enissay

回答

0

嘗試使用format.format(temp.getID())...與每個變量你想這樣的格式:

System.out.println(format.format(temp.getID()) + " " +temp.getName() + " " + format.format(temp.getAge()) + " " + format.format(temp.getGPA())); 

不是在格式化所有的變量在一起。

+0

如果'temp.getName()'後面有格式語句,wouldn' t格式從每行的不同位置開始,因爲每個名字都在不同的地方結束?這需要爲'getName()'增加一個字符串格式嗎? –

+0

@JonSnow嘗試發佈代碼 – Abdelhak