内部に別のループが入れ子のような構造でループが構築され、外側のループが内側のループの実行回数を監視する、このような構造で動作するループを入れ子ループといいます。これは、ループ内のループとも呼ばれます。
広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト次に、異なる構文を示します:
1.ネストされた For ループ
for(initialize;cond1;increment/decrement) { for(initialize;cond2;increment/decrement) { //body of loop2 } //body of loop1 }
2.ネストされた While ループ
while(cond1) { while(cond2) { // body of loop2 } //body of loop1 }
3.ネストされた Do-while ループ
do{ do{ //body of loop 2 }while(cond2) //body of loop 1 }while(cond1
4.ネストされた異種ループ
ループのネストには、同様のタイプのループのみをネストできるという制限はありません。 for ループ内に while ループを入れたり、do-while ループ内に while ループを入れたりするなど、任意のループを他のループ内に入れ子にすることができ、その他の可能な組み合わせはすべて適用できます。
for(initialize;cond1;increment/decrement) { while(cond2){ //body of loop2 } // body of loop1 }
説明:
上記のフローチャートでは、まずプログラム本体に入ると、初期化文やprint文などの文が実行されます。ループが見つかると、プログラムは外側のループの条件をチェックします。 true を返す場合はループに入ります。それ以外の場合、ループは終了し、ループ後のプログラムの残りのステートメントが実行されます。
外側のループに入って内側のループに遭遇すると、変数が存在する場合は初期化され、続いて内側のループの条件がチェックされ、true が返された場合、プログラムは内側のループに入ります。それ以外の場合は、Loop1 の最後に戻り、インクリメント/デクリメントを実行して Loop1 を再度実行します。
cond2 が true を返す場合、ループ 2 ステートメントが実行され、カウンター変数が増加/減少します。この手順を何度か繰り返すと、プログラムはループ 2 を抜け、次にループ 1 を抜け、ループ後のステートメントに移ります。
すべてのループは、その内部に以下の 3 つの要素で構成されます:
ネストされたループの場合、その中のループごとに上記の 3 つのステップがチェックされます。したがって、外側のループの各フローで、内側のループが完全に実行されます。つまり、外側のループに m 個のフローがあり、外側のループに n 個のフローがある場合、このループは合わせて m*n 回実行されることになります。
注: ネストできるループの数やネストできるループのタイプに制限はありません。どのタイプのループも使用できますが、プログラムの時間計算量が大きくなり、パフォーマンスに影響します。例:
for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ System.out.println(“LOOP DEMO”); } }
上記のネストされたループの場合:
アウターループ
Counter variable = i Condition – i<5 Increment/decrement – i++
インナーループ
Counter variable = j Condition – j<5 Increment/decrement – j++
Java でのネストされたループの例を以下に示します。
以下のパターンを印刷するプログラムを書いてみましょう:
*
**
***
****
*****
コード:package Try; class Demo { //static method public static void main(String[] args) { for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ if(i>=j) { System.<em>out</em>.print('*');} } System.<em>out</em>.println("\n"); } } }出力: 説明:
上記のプログラムでは、印刷する必要があるパターンが 5 行 5 列の要素として「*」を持つ 2 次元配列と同様に取得できるため、2 つの内部ループが使用されています。
また、if(i
I=1 | I=2 | I=3 | I=4 | I=5 | |
J=1 | * | ||||
J=2 | * | * | |||
J=3 | * | * | * | ||
J=4 | * | * | * | * | |
J=5 | * | * | * | * | * |
We can easily configure that we need to print * only when i Let’s see the example to print a 2D matrix. Code: Output: Explanation: Nested loop refers to the placement of loop inside the loop to execute the operations that need multiple loop traversals such as printing star patterns or search operations on any collection data structure array or linked list. Although it helps to make our task easier, it also increases the complexity of the program thus must be used in an efficient manner. 以上がJavaの入れ子ループの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。Example #2
package Try;
class Demo
{
public static void printMatrix(int arr[][][]){
int i=0,j=0;
while(i<arr.length){
while(j<arr[i].length){
for (int k = 0; k <arr[j].length; k++)
System.out.println("arr[" + i + "][" + j + "]["+ k + "] = "+arr[i][j][k] );
j++;
}
i++;
j=0;
}
}
public static void main(String[] args)
{
int arr[][][] ={ { { 10, 2 }, { 30, 4 } }, { { 51, 6 }, { 79, 8 } } };
printMatrix(arr);
}
}
In the above program, we have used 3 loops to print the elements stored in a 3D Matrix using 3 counter variables. Thus, any number of loops can be tested as well as any type of loop can be used.Conclusion