2014-12-05 177 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,如果你想自定義的行爲,而不是「類名@散列值」