2014-06-30 134 views
0

我想將3種類型的5個對象傳遞給數組列表。當我打印清單時,所有的值都是零。我試過修改對象類型,但仍然沒有結果,任何人都可以幫忙嗎?將對象傳遞給ArrayList Java

//Item is a Class by itself and the 5 objects draw from this but will have 2/3 additional parameters 
ArrayList<Item> inventory = new ArrayList<>(); 

//Item 1 
Dvd dvd1 = new Dvd(1234567, 2001, "Sugar were going down", "15", "Comedy DVD", 2, 180, "Japanese"); 

//Item 2 
Dvd dvd2 = new Dvd(7654321, 2005, "The only way is up!", "12A", "Comedy DVD", 3, 220, "Greek, Spanish, Italian"); 

等等。現在我的輸出是這樣的:

ID: 0 
Year: 0 
Title: 
Classification: 
Genre: 
Return Date: 25/5/2014 
Available: true 

有什麼建議?

代碼添加對象:

inventory.add(dvd1); 
inventory.add(dvd2); 

打印代碼:

for(int i = 0; i<= inventory.size(); i++){ 
    System.out.println(inventory.get(i)); 
} 
+0

您可以發佈的[MCVE(http://stackoverflow.com/help/mcve)顯示你如何打印的東西出來? –

+0

請添加您輸出的代碼和插入項目 – Neso

+3

請勿在代碼中張貼代碼。編輯您的問題並添加相關內容。 –

回答

0

你的DVD類應覆蓋toString()方法,並在那裏,你將不得不創建你想看到的字符串你的輸出。

public class .... 
..... 
    public String toString() { 
     return "I am a DvD"; 
    } 
} 

將返回 「我是一個DVD」 每次調用system.out.priontln(inventory.get(i))的時間;

這意味着你會做這樣的事情

StringBuilder sb = new StringBuilder(""); 
sb.append("ID: " + <IDVariable>); 
sb.append("\nYear: " + <YearVariable>); //<<<< \n means new Line 
.... 
return sb.toString(); 
+0

從提供的示例輸出 - 它看起來像已經完成。 –

+0

嗨,越來越近,我無法將toString代碼添加到問題中,因爲當複製和粘貼即時消息獲取錯誤時,我再次編寫了toString,並且它現在傳遞了返回日期和可用性(未顯示),仍然沒有給出關於DVD的信息 – Jimmy

+0

你的絃樂好嗎?也許你搞砸了構造函數,有些仍然是空的。也可以嘗試在toString()中設置一個斷點,這樣你就可以在那裏調試,看看如果你使用eclipse只需雙擊左側的一行(出現一個藍點),然後點擊bug而不是普通的運行按鈕。 你將能夠看到你的字符串的價值,也許你可以找出什麼是錯的 – Neso

0

如您有DVD類使已經在構造函數爲私有初始化的8場然後實現干將這些字段

然後在implmentation class創建arraylist爲:

List<Dvd> inventory = new ArrayList<Dvd>(); 

然後將initilized對象添加到列表中。 然後你就可以通過遍歷列表,獲取列表中的值:

for(Dvd dvd : inventory) 

dvd會給你dvd對象然後就調用它的干將

0

得到它解決了,簡單的錯誤,失敗調用super()

=/