2014-01-18 181 views
1

這裏是我的兩個數組,其中一個顏色數組包含另一個顏色數組作爲元素,第二個數組包含另一個對象數組作爲其元素。如何在對象數組中打印出對象元素?

Color[] colourArray= {colorBase[1], colorBase[2], colorBase[2], colorBase[6],colorBase[5], colorBase[0]}; 


Ball[] objectArray = {ballGrid[1], ballGrid[2], ballGrid2[2], ballGrid[6], ballGrid[5], ballGrid2[0]}; 

在我的計劃,我檢查了顏色陣列它返回哪一個元素是真實的,然後我想打印出從球陣列相同的元素。例如,如果colorArray [4](colorBase [5])爲true,那麼程序應該輸出「ballGrid [5]」的objectArray [4]。

if(colorArray[4]==Color.blue){    
    System.out.println((objectArray[4].toString())); 
} 

但是輸出是[[email protected]],但我需要它是ballGrid [5]。

你會怎麼做?

我嘗試了Arrays.deeptoString,但它產生了相同的結果,並且在Ball類中重寫了toString(),但它對我的情況不起作用。

+0

「_one color array contains a another color array as elements_」如果你說'colorBase [1]'是一個數組,我認爲你有這個錯誤。由於您引用的是數組的索引,因此您正在獲取該位置的元素,而不是整個數組。也許你打算在每個位置創建一個新數組,例如'{new colorBase [1]}' – csmckelvey

+2

你正在獲取特定索引處的元素,這是另一個對象,因此返回它的哈希碼。在球類中正確覆蓋toString()並返回字符串對象 –

+0

向我們展示'Ball.java' – MariuszS

回答

0

不,這是不可能的,因爲您正在使用索引將另一個數組的值存儲在數組中。要清楚

這裏使用的是如果(colorArray[4]==Color.blue)colorArray[4]colorBase[5]這inturn獲得第五指數值(Color對象)存儲在colorBase陣列和返回,但不是colorBase[5]本身。

同樣,當你訪問objectArray[4]你得到球對象存儲在ballgrid陣列的第五指標,但不是ballGrid[5]

所以,你得到ballGrid [5]除非你直接存儲這個作爲一個字符串,而不是你在數組聲明中的含義。