0

この強化された for ループについて助けが必要です。標準ループとwhileループのコーディングを理解したいです。ありがとう。

public static int average(int...numbers) {
    int total=0;
    for(int x:numbers)
        total+=x;
    return total/numbers.length;
}
4

3 に答える 3

2

あなたの例では int...numbers は "int[] numbers" と同じです

したがって、for ループはその配列を反復処理する必要があります。

    for(int i=0; i < numbers.length ; i++)
    {
       int x=numbers[i]
       ...
    }
    
直接交換になります。

于 2013-08-06T03:04:14.777 に答える
1

for ループは次と同等です。

for(int i=0;i<numbers.length;i++){
    int x = numbers[i];
    total+=x;
}

各要素が順番に取得され、ループ内のコードが要素ごとに実行されます。

最初の操作int i=0;は、for ループに入ったときに一度だけ実行されます。

2 番目の操作i<numbers.lengthは、for ループを続行するために真でなければならない条件です。これは、実際には任意のブール式にすることができます。ブール式を過度に複雑にすることはお勧めしませんが、その可能性があることに注意してください。例:

boolean continueSumming = true;
for(int i=0;i<numbers.length && continueSumming;i++){
    if(i>9)
        continueSumming=false;
}

このループは、たとえば、continueSumming変数が 9 番目の要素で false に設定されるため、最大 10 要素に対してのみ繰り返されます (配列のインデックスは 0 であることを思い出してください)。

最後の操作i++も各反復で実行されます。ここではインクリメントしますi

iループの実行がいつ終了するかを制御するため、ここではセンチネル変数と呼ぶことができます。あなたのためのより多くのボーナストリビア。

while ループはより単純で、条件が真でなくなるまで繰り返します。この while ループは for ループと同等です。

int index = 0;
while(index < numbers.length) {
    total += numbers[index];
    index += 1;
}

各要素が合計に追加され、インデックスが配列の長さ以上になるとループが終了します。while ループの反復ごとにインデックスが 1 ずつインクリメントされるため、要素ごとに実行されます。

while ループは通常for、ループ構文が冗長ではないため、配列を反復処理するために使用されiません。また、for ループ構文はそうではありませんが、sentinel 変数をスコープ外にすることができます。

于 2013-08-06T03:06:38.800 に答える
0

あなたの質問が「数値の配列の平均を見つけるために for ループまたは while ループを使用することの違いは何ですか?」であると仮定すると、ここに行きます。

for (x : y)yは、参照を使用して配列内のすべてのオブジェクトを操作できるループですx

あなたの例でint total=0;は、平均計算の合計です。

for(int x:numbers)numbersの参照変数を介してすべての整数に対してコードを実行できますx

total+=x;平均計算機がすべきように、ループが処理している現在の数を合計に追加します

total/numbers.lengthnumbers返される数値 ( array 内のオブジェクト) の量で合計を割ります。平均を与える。

while ループは、ブール値、ステートメント、または条件が false になるまでループします。

William Morrison は、整数を使用してループが処理しているオブジェクトを示し、次に処理されるオブジェクトが存在するかどうか (そのインデックスまたは整数がアウトかどうか) をチェックする条件を作成することによって、それがどのように行われるかを示します。の境界のnumbers.length

numbers[index]xfor ループの場合と同じです。

標準のループは、while ループと同じ種類の条件を取ります。

for (int index = 0; index < numbers.length; index = index + 1) {
     total += x;
}

これがループをより明確に理解するのに役立つことを願っています!

于 2013-08-06T03:13:14.173 に答える