我有一个数组,例如:
{ "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;
}
答案 0 :(得分: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[][]
答案 1 :(得分:2)
来自java.lang.ArrayStoreException
documentation:
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]);