2012-08-09 39 views
3

我有一個數組,例如:突破數組子排列

{ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" } 

我想將它分解成子陣列。當我做測試,它顯示的錯誤:

java.lang.ArrayStoreException at line: String[] strarray = splitted.toArray(new String[0]); 

代碼:

public static String[] splittedArray(String[] srcArray) { 
     List<String[]> splitted = new ArrayList<String[]>(); 
     int lengthToSplit = 3; 
     int arrayLength = srcArray.length; 

     for (int i = 0; i < arrayLength; i = i + lengthToSplit) { 
      String[] destArray = new String[lengthToSplit]; 
      if (arrayLength < i + lengthToSplit) { 
       lengthToSplit = arrayLength - i; 
      } 
      System.arraycopy(srcArray, i, destArray, 0, lengthToSplit); 
      splitted.add(destArray); 
     } 
     String[] strarray = splitted.toArray(new String[0]); 
     return strarray; 
    } 
+1

'splitted'是一個數組列表。我認爲你需要做一些像splitted.get(0)或splitted.toArray(new String [] [])' - 但我確信你不能這麼做:P – MadProgrammer 2012-08-09 07:25:07

回答

2

java.lang.ArrayStoreExceptiondocumentation

Thrown to indicate that an attempt has been made to store the wrong type of object into an array of objects. 

您正試圖爲String [] []存儲到一個String []。該修復只是在返回類型中,並將該類型傳遞給toArray方法。

String[][] strarray = splitted.toArray(new String[0][0]); 
+0

是的,謝謝所有你這麼多 – Tom 2012-08-09 07:44:24

2

變化

String[] strarray = splitted.toArray(new String[0]); 

String[][] split = new String[splitted.size()][lengthToSplit]; 
for (int index = 0; index < splitted.size(); index++) { 
    split[index] = splitted.get(index); 
} 

你需要改變你的回報類型爲String[][]