Javaの入れ子ループ

WBOY
リリース: 2024-08-30 15:25:34
オリジナル
443 人が閲覧しました

内部に別のループが入れ子のような構造でループが構築され、外側のループが内側のループの実行回数を監視する、このような構造で動作するループを入れ子ループといいます。これは、ループ内のループとも呼ばれます。

広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト

Java の入れ子ループの構文

次に、異なる構文を示します:

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
}
ログイン後にコピー

フローチャート

Javaの入れ子ループ

説明:

上記のフローチャートでは、まずプログラム本体に入ると、初期化文やprint文などの文が実行されます。ループが見つかると、プログラムは外側のループの条件をチェックします。 true を返す場合はループに入ります。それ以外の場合、ループは終了し、ループ後のプログラムの残りのステートメントが実行されます。

外側のループに入って内側のループに遭遇すると、変数が存在する場合は初期化され、続いて内側のループの条件がチェックされ、true が返された場合、プログラムは内側のループに入ります。それ以外の場合は、Loop1 の最後に戻り、インクリメント/デクリメントを実行して Loop1 を再度実行します。

cond2 が true を返す場合、ループ 2 ステートメントが実行され、カウンター変数が増加/減少します。この手順を何度か繰り返すと、プログラムはループ 2 を抜け、次にループ 1 を抜け、ループ後のステートメントに移ります。

Java ではネストされたループはどのように機能しますか?

すべてのループは、その内部に以下の 3 つの要素で構成されます:

  1. 初期化: このステップは、カウンターの値の初期化を指します。
  2. 条件: この条件は、ループの実行を継続するために true である必要がある比較を指します。
  3. カウンタのインクリメント/デクリメント: これは、ループの 1 つのフローが終了したときにカウンタに対して実行される操作を指します。

ネストされたループの場合、その中のループごとに上記の 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 のネストされたループの例

Java でのネストされたループの例を以下に示します。

例 #1

以下のパターンを印刷するプログラムを書いてみましょう:

*

**

***

****

*****

コード:
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");
}
}
}
ログイン後にコピー
出力: Javaの入れ子ループ 説明:

上記のプログラムでは、印刷する必要があるパターンが 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

Example #2

Let’s see the example to print a 2D matrix.

Code:

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);
}
}
ログイン後にコピー

Output:

Javaの入れ子ループ

Explanation:
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

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!