2012-05-16 57 views
0

我有一個ArrayList,其元素是數組。例如[[2,3,4],[5,6,7],[8,9,10]]。我需要將數組元素(例如[1,2,3])傳遞給只接受數組的方法。如何將ArrayList的元素<Integer[]>傳遞給只接受數組的方法?

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;

如何糾正呢?

感謝

+6

我們可以看到如何'arrayList'得到填補?這看起來應該像現在這樣工作。 –

+0

我覺得'有些代碼'有錯誤 – Kayser

回答

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... 

    } 
} 
+0

謝謝大家。路易斯和凱瑟你的懷疑是正確的。有一個upsteam問題。 – blue

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(); 
} 
0
public ArrayList<Integer[]> arrayList; 
//initialize the arrays and add them to the arraylist 
for(Integer[] in : arrayList) { 
    Integer result = methodTakesOnlyArrays(in); 
    // more code... 
} 
相關問題