2012-08-09 53 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[][]