2014-12-05 92 views
0

我创建了一个函数,它可以在我的数组中找到最多3个组。当我来打印这个时,内存地址[I @ 43c46747被打印,而不是数组中应该包含的最大值。Java打印阵列内存地址而不是阵列内容

我不允许使用任何进口声明/任何先进的解决方法 - 试图可能使用帮助函数?

谢谢:)

+2

然后写一个循环接一个打印阵列一个的每一个项目被正确重写。 – 2014-12-05 16:27:43

回答

0

当您尝试正常打印数组,你只不过是调用toString()方法数组对象。在Java中,这是默认的实现,它会打印出像上面看到的结果[[email protected]

您应该使用

打印有意义值的数组。

+2

“*我不允许使用任何import语句。*” – Pshemo 2014-12-05 16:30:36

+2

@Pshemo'java.util.Arrays.toString(myarray的);' – 2014-12-05 16:31:01

+2

@SotiriosDelimanolis虽然技术上是正确的,我怀疑OP老师会欣赏它:) – Pshemo 2014-12-05 16:32:34

2

事实上,你看到的不是内存地址,而是数组的类名和散列值(十六进制形式)。这是从toString()方法继承的行为java.lang.Object

您可以使用for-loop来逐个打印每个数组元素。

例如。

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

注意println打印非原始类型的数组元素的toString方法的结果。确保他们toString,如果你想自定义的行为,而不是“类名@散列值”