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;
    }
4

2 に答える 2

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[][]

于 2012-08-09T07:29:22.203 に答える
2

java.lang.ArrayStoreException ドキュメントから:

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]);
于 2012-08-09T07:32:01.583 に答える