2011-03-30 73 views
0

我想從另一個類訪問toString方法以便打印數組的元素。顯示arraylist的元素

info += "Purchases:\n"; 
for(int index = 0; index < purchases.size(); index++){ 
    info += "[" + (index + 1) + "] "; 
    info += purchases.get(index).toString(); 
    info += "\n"; 
} 

我想代碼訪問的toString在購買該類輸出

public String toString(){ 
    String info; 
    DecimalFormat formatter = new DecimalFormat("$#0.00"); 

    info= (date.get(Calendar.MONTH) +1) + "/" + date.get(Calendar.DAY_OF_MONTH) + "/" + date.get(Calendar.YEAR); 
    info += "\t" + vendor + "\t\t"; 
    info += (formatter.format(amount)); 

    return info; 
} 

我怎樣才能做到這一點?

+1

是錯誤你停留在哪? – Aleadam 2011-03-30 17:28:36

回答

0

你這樣做的方式效率低下,但它會工作。

你看到什麼問題?

如果您得到NullPointerException異常掉話到.toString()因爲它會爲你做這個反正(除withou的NPE)

+0

它只打印金額,我希望它打印購買類的toString方法中的日期和供應商 – trs 2011-03-30 17:32:49

+0

聽起來好像您的購買類的舊版本正在運行。嘗試重新編譯它。如果這不起作用,請在toString()的第一行放置一個斷點,然後對其進行調試。 – 2011-03-30 17:47:38

0

當您覆蓋對象的toString()方法,你不需要調用它爲了像這樣工作:

myObject.toString(); 

也用於打印數組我建議使用增強for循環,這很容易。 實施例:

List<MyObject> mo = new ArrayList<MyObject>(); 
for(MyObject s: listObject){ 
    System.out.print(s); 
} 

上面的例子將如果MyObject來類覆蓋了toString()方法 注很好地工作:只是想象莫充滿對象。

我想你正確地覆蓋了toString()方法,問題就在你的循環中。給一個嘗試增強的for循環:

for(Purchase p: purchases) { 
    System.out.println(p); 
} 

這應該做的工作

+0

它不會允許「購買p:購買」它給出類型不匹配錯誤不能轉換從雙 – trs 2011-03-30 17:45:12

+0

我需要更多的信息。在您的購買類上發佈代碼,以便我可以查看每個變量的類型。我會看看我能做什麼。 – sfrj 2011-03-30 17:54:56

+0

@trs:你確定'購買'是'列表'而不是'列表'或類似的嗎? – 2011-03-30 20:44:10