0

要素が配列である ArrayList があります。たとえば[[2,3,4],[5,6,7],[8,9,10]]。配列要素 ex[1,2,3]を、配列のみを受け取るメソッドに渡す必要があります。

public ArrayList<Integer[]> arrayList;
//some code
for(int i = 0; i < arrayList.size(); i++) {
  Integer[] elementArray = arraylist.get(i);
  Integer = methodTakesOnlyArrays(elementArray);
  // more code...

これはjava.lang.ClassCastException: java.util.ArrayList cannot be cast to [Ljava.lang.Integer;

これを修正するにはどうすればよいですか?

ありがとう

4

3 に答える 3

1

コードにいくつかの構文エラーが含まれているという事実に加えて、次のコードは正しくコンパイルおよび実行されます。

public void first(){
    ArrayList<Integer[]> arrayList = new ArrayList<Integer[]>();
    arrayList.add(new Integer[]{2,3,4});
    arrayList.add(new Integer[]{5,6,7});
    arrayList.add(new Integer[]{8,9,10});
    //some code
    for(int i = 0; i < arrayList.size(); i++) {
      Integer[] elementArray = arrayList.get(i);
      Integer integer = methodTakesOnlyArrays(elementArray);
      // more code...

    }
}
于 2012-05-16T11:36:03.270 に答える
0

あなたが説明したようなコードをいくつか書いたので、うまく動作します。JDK1.6.0_32 を使用しています。

これが私のコードです:

public static void main(String[] args) {
    ArrayList<Integer[]> arrayList = new ArrayList<Integer[]>();
    Integer[] elementArrayA = { 1, 2, 3 };
    Integer[] elementArrayB = { 4, 5, 6 };

    arrayList.add(elementArrayA);
    arrayList.add(elementArrayB);

    for (int i = 0; i < arrayList.size(); ++i) {
        Integer[] elementArray = arrayList.get(i);
        System.out.println(arrayToString(elementArray));
    }
}

public static String arrayToString(Integer[] inputArray) {
    StringBuffer stringBuffer = new StringBuffer();
    stringBuffer.append("[");

    boolean isFirst = true;
    for (Integer elementInteger : inputArray) {
        if (isFirst) {
            stringBuffer.append(String.valueOf(elementInteger));
            isFirst = false;
        } else {
            stringBuffer.append(", ");
            stringBuffer.append(String.valueOf(elementInteger));
        }
    }

    stringBuffer.append("]");

    return stringBuffer.toString();
}
于 2012-05-16T11:39:44.407 に答える
0
public ArrayList<Integer[]> arrayList; 
//initialize the arrays and add them to the arraylist 
for(Integer[] in : arrayList) {  
  Integer result = methodTakesOnlyArrays(in); 
  // more code... 
}
于 2012-05-16T11:53:57.687 に答える