この強化された for ループについて助けが必要です。標準ループとwhileループのコーディングを理解したいです。ありがとう。
public static int average(int...numbers) {
int total=0;
for(int x:numbers)
total+=x;
return total/numbers.length;
}
この強化された for ループについて助けが必要です。標準ループとwhileループのコーディングを理解したいです。ありがとう。
public static int average(int...numbers) {
int total=0;
for(int x:numbers)
total+=x;
return total/numbers.length;
}
あなたの例では int...numbers は "int[] numbers" と同じです
したがって、for ループはその配列を反復処理する必要があります。
for(int i=0; i < numbers.length ; i++)
{
int x=numbers[i]
...
}
直接交換になります。
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 変数をスコープ外にすることができます。
あなたの質問が「数値の配列の平均を見つけるために for ループまたは while ループを使用することの違いは何ですか?」であると仮定すると、ここに行きます。
for (x : y)
y
は、参照を使用して配列内のすべてのオブジェクトを操作できるループですx
。
あなたの例でint total=0;
は、平均計算の合計です。
for(int x:numbers)
numbers
の参照変数を介してすべての整数に対してコードを実行できますx
total+=x;
平均計算機がすべきように、ループが処理している現在の数を合計に追加します
total/numbers.length
numbers
返される数値 ( array 内のオブジェクト) の量で合計を割ります。平均を与える。
while ループは、ブール値、ステートメント、または条件が false になるまでループします。
William Morrison は、整数を使用してループが処理しているオブジェクトを示し、次に処理されるオブジェクトが存在するかどうか (そのインデックスまたは整数がアウトかどうか) をチェックする条件を作成することによって、それがどのように行われるかを示します。の境界のnumbers.length
。
numbers[index]
x
for ループの場合と同じです。
標準のループは、while ループと同じ種類の条件を取ります。
for (int index = 0; index < numbers.length; index = index + 1) {
total += x;
}
これがループをより明確に理解するのに役立つことを願っています!