2012-02-16 10 views
3

私は配列のすべての偶数の平均を取る方法を作成しています。Arraylistから整数の配列へ、それを動作させることはできません(java)!

arraylistオブジェクト(evens)を配列に変換する方法はありますか?

public static double percentEven(int[]a) 
    { 
    ArrayList evens = new ArrayList(); 
    int evenSum = 0; 


    for (int counter = 0;counter < a.length;counter++) 
    { 
     if ((a[counter]%2) == 0)  
     evens.add(a[counter]); 
    }  

    int[] evenReturned = new int[evens.size()]; 
    evens.toArray(evenReturned); 

    int evensCount = 0; 
    for (evensCount = 0;evensCount < evens.size();evensCount++) 
    { 
     evenSum += evenReturned[evensCount]; 
    }  


    return evenSum/evensCount; 

    }  
+1

なぜそれを配列に変換したいのですか?これを行う必要はありませんか?そのままArrayListから完全に細かく集計することができます。 – Yuushi

+1

アレイで平均化を直接行うのはなぜですか?ちょうど偶数要素の合計と数を維持してください。終了リターン 'sum/count'を追加します。ところで、その最後の部分はあなたが今も忘れていることです。 – jackrabbit

+0

アレイ側では、arraylistをどのように正しく変換していますか? – pood

答えて

7

なぜあなたはそれらを収集していますか?ちょうどそれらを合計する!

int evensCount = 0; 
int evenSum = 0; 
for (int counter = 0; counter < a.length; counter++) { 
    if (a[counter] % 2 == 0) { 
     evensCount++; 
     evenSum += a[counter]; 
    } 
} 

return evenSum/evensCount; 
+0

笑、私は遅れている*手のひらに手の平* – pood

1

あなたがそれらを合計したい場合は、単に追いついたのArrayList内の各要素を通過するループのための専門を使用し、例

for (int e : evens) 
{ 
    evenSum += e; 
} 

return evenSum/evensCount; 
1

のためにあなたはちょうどこの

を行う必要があります配列へのArrayListを変換することができますが、ここでそれを行う必要はありませんが
if ((a[counter]%2) == 0) { 
    evenCount++ ; 
    evens.add(a[counter]); // required only if you want an array of even numbers 
    evenSum += a[counter] ; 
} 
... 
... 
return evenSum/evenCount ; 
2

次の操作を行います。

List<T> list = new ArrayList<T>(); 
T [] yourArray = list.toArray(new T[list.size()]); 
関連する問題