2017-11-16 11 views
0

配列内のすべての数値の平均を計算するはずの次のコードを記述しようとしていましたが、foreach-loopを使用する必要があります。 問題は、コンパイラが3行目のfloatからintへの損失の多い変換について教えてくれることです(for(int k:numbers))。foreach-loopで整数への可逆変換float

kをfloatにキャストしても機能しない、キャスティングの数値が機能しない( 'fコース)、その他のキャストはどちらも機能しないようです。 どこが問題ですか、お手伝いください!

ありがとうございます!だから、

float calculateAverage(float[] numbers){ 
    float a = 0.0f; 
    for(int k: numbers){ 
     (a) = a+numbers[k]; 
    } 
    return a/(numbers.length-1); 

} 
+0

は宿題のようです。ほとんどの言語では、割り当ての左側で、何かをすることはできません。ちょうど右側に... – helt

+0

これは私が推測するところです。あなたが使用している言語用のタグを追加するのが最善でしょう。 –

+0

あなたは拡張された 'for'ループを使用しています。これは 'numbers'配列にアクセスするためにカウンタ変数を使用しません。 'numbers'配列の各_member_は、ローカル変数内でループを反復しながら順番に保持されます。したがって、あなたの配列は 'float []'型の配列なので、 'k'は' float'である必要があります。ループの最初の反復で、 'numbers'の最初の値は' k'に保持されます。累積的な追加を 'a'で行うことができます。その後、最後に分割を行います。 – OnlySteveH

答えて

0

、ここであなたはaにそれらを追加し、順番にknumbersの各要素を保持します。インデックスとnumbers[]にアクセスする必要はありませんので、強化forループはカウンタ変数を使用していない

float calculatedAverage(float[] numbers){ 
    float a = 0.0f; 
    for (float k : numbers) { 
     a += k; 
    } 
    return a/numbers.length; 
} 

:あなたは、配列の要素数で割っaの値を返します。

関連する問題