0

を含む ArrayList を取得しました。その中にString、合計 20 個の要素があります。intdouble

Stringsを文字列配列、intsint 配列、および double配列に移動しようとして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);
        }
    }
}

なぜこれが機能しないのか理解できません。10 個を超える要素を追加しようとしているため、配列に整数ではないオブジェクトを追加しようとすると、outOfBounds 例外が発生します。

4

5 に答える 5

2

インデックスの不一致があります。それだけです。次のようなものを試してください:

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)
于 2012-11-26T19:59:46.737 に答える
0

出力配列ごとに個別のインデックスを維持する必要があります。

于 2012-11-26T19:59:54.633 に答える
0

まず第一に、これらすべてのデータ型がオブジェクトの ArrayList に集まることを決して許可すべきではありません。ただし、すでにそれらを持っている場合:

for(Object o : randomList)
{
    if(o instanceof Integer)
    {
        //add to inteeger list
    }
    else if(o intenaceof String)
    {
       //add to string list
    }
    //...etc
}
于 2012-11-26T20:00:18.640 に答える
0
  1. 配列を次のように初期化してみてください:

    private int [] intArray = new int[randomList.size()];
    
  2. 別のインデックスを試して、配列に値を割り当てます。

    int count=0;
    for(int i = 0; i<randomList.size();i++){
        if(randomList.get(i)instanceof Integer){
           intArray[count++] = (Integer) randomList.get(i);
        }
    }        
    
  3. System.arraycopy最後に、以下のように使用されていない配列フラグメントを切り捨てたい場合があり ます。

    private int [] finalArray= new int[count;
    System.arraycopy(intArray, 0, finalArray, 0, count);
    
于 2012-11-26T20:00:33.433 に答える
0
private int [] intArray = new int[10];

配列のサイズは 10 ですが、リストにはサイズ制限がありません。

private int [] intArray = new int[randomList.size()];

動作する可能性があります。

于 2012-11-26T20:01:02.460 に答える