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 回答