我有一个包含Stringintdouble的ArrayList,总共20个元素。

我试图将Strings移至字符串数组,将ints移至int数组,将doubles移至双精度数组。但是我不知道怎么做,这就是我寻找整数的原因:

    private ArrayList <Object> randomList = new ArrayList <Object>();
    private int [] intArray = new int[10];

    public void example(){
    createArray();
    for(int i = 0; i<randomList.size();i++){
        if(randomList.get(i)instanceof Integer){
            intArray[i]= (Integer) randomList.get(i);
        }
    }
}


我不明白为什么这个不起作用,它试图将arent Integers的对象添加到我的数组中,导致outOfBounds异常,因为它试图添加10个以上的元素。

最佳答案

您的索引不匹配,仅此而已。尝试类似的东西:

int index = 0;

for(int i = 0; i<randomList.size();i++)
{
        if(randomList.get(i)instanceof Integer)
        {
            intArray[index++]= (Integer) randomList.get(i);
        }
}


您还应该检查特定数组的当前索引是否小于上限,即该数组的初始大小:

if(randomList.get(i) instanceof Integer && index < intArray.length)

10-05 18:20