2021/02/09 公開
・多重ループ
多重ループはループの中にループがあるプログラムの構造です。入れ子、ネスト構造とも呼ばれます。ループの中にループを1つ書いた構造を2重ループ、2重ループの中にループを1つ書いた構造を3重ループといいます。さらにその構造の中にループを入れていくと4重ループ、5重ループ…となります。これらをまとめて多重ループといいます。
多重ループは、for文/while文/do~while文の中にループを書くことで作ることができます。その際、for文/while文/do~while文の組み合わせは任意です。for文の中にfor文、for文の中にwhile文、do~while文の中にwhile文など自由に組み合わせることができます。
以下はfor文をつかった2重ループの基本的な書き方です。for文の中にfor文を書いています。
for ( 外側の初期化式; 外側の継続条件式;外側の変化式 ) { for ( 内側の初期化式; 内側の継続条件式;内側の変化式 ) { 処理文1 処理文2 : } }
次に、for文を使った3重ループの基本的な書き方です。for文の中にfor文を書いて、さらにその中にfor文を書いています。
for ( 初期化式1; 継続条件式1; 変化式1 ) { for ( 初期化式2; 継続条件式2; 変化式2 ) { for ( 初期化式3; 継続条件式3; 変化式3 ) { 処理文1 処理文2 : } } }
それでは次の書き方はどうでしょうか?。外側のfor文の中に2つのfor文を書いています。
for ( 外側の初期化式; 外側の継続条件式;外側の変化式 ) { for ( 内側1の初期化式; 内側1の継続条件式;内側1の変化式 ) { 処理文1 処理文2 : } for ( 内側2の初期化式; 内側2の継続条件式;内側2の変化式 ) { 処理文1 処理文2 : } }
外側のfor文の中に内側のfor文が2つありますが3重ループではありません。構造は2重ループですが一般的な2重ループとは違います。
さらに、次の書き方はどうでしょうか?外側のfor文の中に2重ループと1重ループが書かれています。
for ( 外側の初期化式; 外側の継続条件式;外側の変化式 ) { // 2重ループ for ( 内側1の初期化式; 内側1の継続条件式;内側1の変化式 ) { for ( 内側2の初期化式; 内側2の継続条件式;内側2の変化式 ) { 処理文1 処理文2 : } } // 1重ループ for ( 内側3の初期化式; 内側3の継続条件式;内側3の変化式 ) { 処理文1 処理文2 : } }
これも多重ループといえば多重ループが一般的な多重ループではありません。このように、ループの作り方はいろいろあるので、必要に応じたループ構造を作成してください。
ここからは、多重ループを使ったJavaのソースコードを紹介していきます。
以下のJavaソースコードは、int型の変数iを1~5まで1ずつ増やしていく外側のループの中に、int型の変数jを1~3まで1ずつ増やしていく内側のループを作り、それらの変数の値をコンソール出力するものです。for文を使った2重ループの例です。
MultiLoop2.java ← クリックしてダウンロードページに移動001: public class MultiLoop2 { 002: public static void main( String[] args ) { 003: // 外側のループ 004: for ( int i = 1; i <= 5; i++ ) { 005: // 内側のループ 006: for ( int j = 1; j <= 3; j++ ) { 007: System.out.println( "i=" + i ); 008: System.out.println( "j=" + j ); 009: System.out.println(); 010: } 011: } 012: } 013: }
出力結果
i=1 j=1 i=1 j=2 i=1 j=3 i=2 j=1 i=2 j=2 i=2 j=3 i=3 j=1 i=3 j=2 i=3 j=3 i=4 j=1 i=4 j=2 i=4 j=3 i=5 j=1 i=5 j=2 i=5 j=3
外側のfor文で変数iが1のとき(最初)に、内側のfor文で変数jが1から3まで1ずつ変わっていきます。したがって、変数i=1のとき、出力は以下のようになります。
i=1 j=1 i=1 j=2 i=1 j=3
同様に、変数i=2のとき、出力は以下のようになります。
i=2 j=1 i=2 j=2 i=2 j=3
このように、変数i=5になるまでこれが繰り返されます。
以下のJavaソースコードは3重ループの例です。参考にしてください。
MultiLoop3.java ← クリックしてダウンロードページに移動001: public class MultiLoop3 { 002: public static void main( String[] args ) { 003: // 1つめのループ 004: for ( int i = 1; i <= 5; i++ ) { 005: // 2つめのループ 006: for ( int j = 1; j <= 3; j++ ) { 007: // 3つめのループ 008: for ( int k = 1; k <= 2; k++ ) { 009: System.out.println( "i=" + i ); 010: System.out.println( "j=" + j ); 011: System.out.println( "k=" + k ); 012: System.out.println(); 013: } 014: } 015: } 016: } 017: }
以上です。
■関連コンテンツ
break文 | ループから処理から抜け出る |
continue文 | ループの先頭に戻る |
値のコンソール表示 | print()、println()とは? |
インクリメント・デクリメント演算子 | インクリメント、デクリメント演算子について解説 |
![]() |
Javaの変数変数は、プログラムの中で値を入れておく入れ物のようなものです。 |
![]() |
for文繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。 |
![]() |
while文繰り返し処理に使用するwhile文について解説 |
![]() |
do~while文繰り返し処理に使用するdo~while文について解説 |
![]() |
九九(くく)の表を作る九九(くく)の表を作る方法を解説 |
![]() |
九九(くく)の表を作る2掛け算を使わないで九九(くく)の表をコンソール出力する方法を説明 |
![]() |
九九(くく)の表を作る3九九の計算結果を2次元配列に入れて、その値をコンソール出力する方法を説明 |
![]() |
市松模様(テキスト版)和柄の一つである市松模様のテキスト文字で表現する方法を紹介しています。 |
![]() |
円を描く(テキスト版)塗りつぶした円をテキスト文字で表現する方法を紹介しています。 |
![]() |
三角形を描く(テキスト版) その1for文を使ってテキストの直角三角形を表現する方法を解説しています。底辺が下になる直角三角形です。 |
![]() |
三角形を描く(テキスト版) その2for文を使ってテキストの直角三角形を表現する方法を解説しています。底辺が上になる直角三角形です。 |
■新着情報
2021.12.21 | 現在の日時を取得 | いまの年月日、時分秒? |
■広告
