CodeGym /Java Blog /ランダム /Javaの入れ子ループ
John Squirrels
レベル 41
San Francisco

Javaの入れ子ループ

ランダム グループに公開済み
Java は、他のほとんどのプログラミング言語と同様に、ネストされたループをサポートします。これは、ループ内のループを意味します。この記事では、Java で入れ子になったループを操作する方法について説明します。

Java のネストされたループ

ループが別のループ内に配置される場合、そのループはネストされていると呼ばれます。最初のパスでは、外側のループが内側のループを呼び出し、最後まで実行され、その後、制御が外側のループの本体に転送されます。2 回目のパスでは、外側のループが内側のループを再度呼び出します。外側のループが終了するまで同様に続きます。Java には 4 種類のループがあります。
  • forループ

  • whileループ

  • do...whileループ

  • for-eachループ

それらはすべてネストされたループをサポートしています。ネストされたループ構造は、一方が他方に依存する 2 つの条件を満たす必要がある場合に使用されます。たとえば、2 次元行列、半ピラミッド、九九を表示する必要がある場合です。

Java のネストされたループの仕組み

おそらく Java で最もよく使用されるループはforです。これは主に、このループが非常に多用途であり、コードが非常に読みやすいためです。ネストされたforループの一般的な構文は次のとおりです。

// outer loop
for (initialization; condition; increment) {
  //write here your code 

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
彼はどのように働いていますか? 外側のループが開始されます。次に、ネストされたforループが作業を開始し、条件が満たされるまでそのインデックスを通過し、再び作業を外側のループに渡します。これは、外側のループの条件が満たされるまで行われます。少し難しいように思えますね。そうですね、具体的な例を使うとより理解しやすくなりますので、次に進みましょう。

ネストされた for ループのコード例

ここに典型的な例を 1 つ挙げます。2 つのforループを使用してハーフピラミッドを出力してみましょう。そのうちの 1 つはネストされています。

public class NestedLoopsDemo1 {

   public static void main(String[] args) {

       for (int i = 0; i < 10; i++) {
           for (int j = 0; j<=i;  j++)
               System.out.print("*");
           System.out.println();
       }
      
   }
}
出力は次のとおりです。
* ** *** **** ***** ****** ******* ******** ********* ***** *****

ネストされた while ループのコード例


public class NestedLoopsDemo2 {

   public static void main(String[] args) {

       int i = 0;
       while (i < 10) {
           int j = 0;
           while (j <= i) {
               System.out.print("*");
               j++;
           }
           System.out.println();
           i++;

       }
   }
}
出力は前の例とまったく同じです。
* ** *** **** ***** ****** ******* ******** ********* ***** *****
do ...whileループはwhileループに似ています。主な違いは、 do...whileループの本体が式のチェックの前に 1 回実行されることです。

ネストされた foreach ループのコード例

for-eachループは、通常のforループと同様にネストできます。これは、2 次元配列を反復する ネストされたfor-eachループの例です。

public class NestedLoops2 {

       public static void main(String[] args)
       {
           int[][] mainArray = { {5, 4, 3, 2, 1}, {7, 8, 9, 10, 11} };

           for (int[] myArray : mainArray)
           {
               for (int i : myArray)
               {
                   System.out.print(i+" ");
               }
               System.out.println("");
           }
       }
}
出力は次のとおりです。
5 4 3 2 1 7 8 9 10 11

for ループと while ループの混合例

場合によっては、異なるタイプのループを相互にネストすることができます。たとえば、whileやfor -eachなどです。ただし、これはプログラミングの最善の方法ではありません。このような構造は、コードの可読性を著しく損ないます。したがって、プロのプログラマーは、一方を他方と混同しないように努めます。まあ、そうしますが、それは本当に必要な場合に限ります。そしてもう 1 つの小さなルール: whileforのどちらかを選択する場合は、可能な限りfor を使用してください。ただし、ここではwhile内でforループを使用する例を示します。もう一度半ピラミッドを構築しましょう。

public class NestedLoopsDemo2 {

   public static void main(String[] args) {
       int i = 0;
       while (i < 10) {
           for (int j = 0; j <= i; j++) {
               System.out.print("*");
           }
           System.out.println();
           i++;

       }
   }
}
出力は驚くべきものではありません:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION