2014-01-18 118 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]除非你直接存储这个作为一个字符串,而不是你在数组声明中的含义。