将数组中断为子数组

时间:2012-08-09 07:22:03

标签: java arrays

我有一个数组,例如:

{ "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;
    }

2 个答案:

答案 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]);