2013-02-27 269 views
0

我遇到這似乎是一個有趣的bug ......奇怪的輸出

對於我班的一個,我需要編寫模擬舊的「X生下去走廊關閉程序儲物櫃每x間隔「情景。然而,一個有趣的轉折是,這個問題需要有相同數量的學生和儲物櫃達到100個。所以我決定使用一個數組,用戶輸入一個數字 - 然後用於設置數組大小, for-loop條件等等等等......你得到了圖片,對吧?

不管怎樣,我的代碼編譯,但運行時它提出了類似:

[[email protected] 

有人(在另一個線程/問題/任何你呼叫它)說,這是物理位置系統內存中的數組,並從數組中獲取實際的數字.getNums()方法將是必需的。我的問題是:.getNums()方法在Java中似乎不存在(也許它是另一種語言的一部分?),那麼下一個最佳選擇或解決方案是什麼?

+0

你可以發佈代碼,你1)聲明數組2)初始化數組3)打印數組? – 11684 2013-02-27 20:42:53

回答

4

您正在打印出int數組,這是一個傳統數組的.toString()表示形式。您可能希望使用Arrays.toString()代替更好看的輸出。

+0

這正是我正在尋找的,謝謝! – JGeorge 2013-02-27 20:42:41

1

要打印的陣列任一迭代的內容在每個元件陣列中:

int[] array = new int[10]; 

for(int s : array) System.out.println(s); 
// or 
for(int i = 0; i < array.length; i++) System.out.println(array[i]); 

,或者使用Arrays.toString()

int[] array = new int[10]; 
System.out.println(Arrays.toString(array)); 

它將打印類似:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

不管怎樣,我的代碼編譯,但運行時它提出了類似:

[[email protected] 

我假設你要打印數組是這樣的:

int[] array = new int[10]; 
System.out.println(array); 

array是一個對象,因此您打電話println(Object)PrintStreamSystem.out),它在內部傳遞的對象上調用toString()。該陣列的toString()類似於ObjecttoString()

getClass().getName() + "@" + Integer.toHexString(hashCode()); 

所以輸出會是這樣的:

[[email protected] 

其中[ represnts陣列的深度和Iint756a7c99是作爲十六進制數從hashCode()返回的值。

也請閱讀Class.getName() JavaDoc

+0

其實我正在使用System.out.prinltln(array.toString());',但是謝謝! – JGeorge 2013-02-27 20:56:59