2013-10-31 69 views
0
public class ArrayUtilities{ 
    public static void main(String[] args){ 
    int[] array1= {1,2,3,4,5,10,15,30,32}; 
    System.out.println(copy(array1)); 
    } 
public static int[] copy(int[] array){ 
    int[] newArray = new int[array.length]; 
    for(int i = 0; i < array.length; i++){ 
    array[i] = newArray[i]; 
    } 
    return newArray; 
} 
} 

我必須編寫一個方法來複制數組。問題是每當我運行這個代碼,它給我[我@ 68e4e358,而不是數組。 請幫忙 提前謝謝!如何在java中打印陣列

回答

5

由於複製方法返回array可以:

  1. 使用for循環來打印所述陣列的每個項目(標準爲環或for-each loop
  2. 使用Arrays.toString(copy(array1));
+0

即時通訊不允許使用庫方法,所以基本上我必須編寫另一種方法來打印它? – user2826974

+1

@ user2826974是的for循環遍歷數組中的所有元素來逐一打印它們應該做的技巧=) –

+0

但我的方法應該返回int [],如果我打印它們,不要他們成爲字符串? – user2826974

0

[I @ 68e4e358

toString()對於數組沒有實現,因爲您需要返回數組的類型([[I]),後面跟着哈希碼。

爲了測試目的,您可以使用此方法。

int[] array1= {1,2,3,4,5,10,15,30,32}; 
System.out.println(Arrays.toString(copy(array1))); 

或者你可以選擇。

int[] copy = copy(array1); 
    for(int element : copy){ 
    System.out.println(element); 
    } 

這是我在google中發現的一個實現,它可以幫助你。

public static String toString(int[] a) { 
    if (a == null) 
     return "null"; 
    int iMax = a.length - 1; 
    if (iMax == -1) 
     return "[]"; 

    StringBuilder b = new StringBuilder(); 
    b.append('['); 
    for (int i = 0; ; i++) { 
     b.append(a[i]); 
     if (i == iMax) 
      return b.append(']').toString(); 
     b.append(", "); 
    } 
} 
0

超越控制toString()和編寫代碼有

0

覆蓋的toString()方法及其體紋什麼ü像一些相關的數組中。

1

你看到的原因[I @ 68e4e358是因爲這是數組對象本身的字符串表示形式,而不是數組的內容。要打印出複製數組的內容,請遍歷每個元素並在數組索引上調用System.out.println。例如 -

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