2011-11-04 78 views
0
for (int i = 0; i < row.findRowNumber(); i++) { 
    String[] itemTokens = rawInventory[i].split("\\s"); 
    inventory[i] = new Item(itemTokens[0], Integer.parseInt(itemTokens[1])); 
} 

for (int i = 0;i < inventory.length; i++) { 
    System.out.println(inventory[i]); 
} 

我想訪問名爲inventory的對象結構數組。如果我測試println它將出現爲:訪問結構數組

[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 

那麼我該如何處理java中的對象數組?謝謝

+0

您已經訪問對象的數組和印刷引用。你期望輸出什麼? –

+0

它假設出來爲:蘋果40葡萄30等等 – nfnmy

+1

然後,你必須相應地訪問對象的字段,並打印它們或覆蓋類'toString'方法。 Java無法知道你想如何打印字段。 –

回答

3

您應該爲您的數據結構Item執行toString()然後它將被調用System.out.println()

例如:

String toString() { 
    return getName() + " " + getAmount(); 
} 

如果我們假設你有getName()得到的名稱和getAmount()得到的金額。

1
System.out.println(inventory[i]); 

庫存清單包含Item的對象,因此inventory [i]將返回Item的對象。

現在爲了打印,調用項目的getter,setter或字段名稱。

例如,Item類有兩個實例變量x,y,它們在構造函數中設置。那麼什麼ü可以做的是

System.out.println(inventory[i].getX()); 

,如果 'x' 爲公共然後簡單地

System.out.println(inventory[i].x); 

或被他人作爲siggested,覆蓋toString()方法。

+0

我有兩個變量,我想並排打印只是爲了首先測試它,所以,我怎樣才能在構造函數上調用getter方法? – nfnmy

+0

Nops,如果你已經爲你的項目類中的字段定義了getter和setter函數,那麼只有你能夠調用它們。或者你可以簡單地做到這一點 System.out.print(inventory [i] .variable1); System.out.print(inventory [i] .variable2); @NikYusofNikFarid – Zohaib

+0

爲了直接獲取字段,比如System.out.print(inventory [i])。變量2);變量2應該是公共成員,這本身可能不是一個好習慣。 @NikYusofNikFarid – Zohaib

1

只是簡單地覆蓋項目類

1

你的項目類需要重寫的toString()方法toString()

1

您可以在Item類中實現toString()方法。當你實現它的時候,這個列表將包含你在每個Item上打印的方法。

1

您正在打印出Item對象。 如果您想要具體輸出,您可以在Item類中實現toString()方法。

或者在循環存取干將,如:

for (int i = 0;i < inventory.length; i++) { 
    System.out.println(inventory[i].getName() + " " + inventory[i].getQuantity()); 
}