Java 如何打印对象数组中的对象元素?

Java 如何打印对象数组中的对象元素?,java,arrays,Java,Arrays,这是我的两个数组,一个是包含另一个颜色数组作为元素的颜色数组,另一个是包含另一个对象数组作为元素的对象数组 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],

这是我的两个数组,一个是包含另一个颜色数组作为元素的颜色数组,另一个是包含另一个对象数组作为元素的对象数组

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,则程序应打印出objectArray[4],即ballGrid[5]

if(colorArray[4]==Color.blue){              
    System.out.println((objectArray[4].toString()));
}
然而,输出是[最终项目]。Ball@9aba32],但我需要它是ballGrid[5]

你会怎么做


我尝试了Arrays.deeptoString,但它产生了相同的结果,并且在Ball类中覆盖了toString,但它不适用于我的情况

不,这是不可能的,因为您正在使用索引将另一个数组的值存储在一个数组中。说清楚

这里您使用的是ifcolorArray[4]==Color.blue,colorArray[4]指的是colorBase[5],inturn获取存储在colorBase数组中并返回的第5个索引值Color对象,而不是colorBase[5]本身

类似地,当您访问objectArray[4]时,您会得到存储在ballgrid数组第5个索引处的Ball对象,但不是ballgrid[5]


因此,除非您直接将其存储为字符串,否则将得到ballGrid[5],但这不是您在数组声明中的意思。

一个颜色数组包含另一个颜色数组作为元素。如果您说colorBase[1]是数组,我想您弄错了。由于引用的是数组的索引,因此获取的是该位置的元素,而不是整个数组。可能您想在每个位置创建一个新数组,如{new colorBase[1]}您将在一个特定索引处获取元素,该索引是另一个对象,因此它返回了hashcode。在ball类中正确重写toString并返回字符串objectPraveen的注释就是答案,我想。