Javaプログラミング学習サイト ゆるゆるプログラミング

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

2重ループのなかで、変数iと変数jの値を出力しています。

外側の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:    }

以上です。

■関連コンテンツ

Javaの変数 Javaで扱う変数について解説
break文 ループから処理から抜け出る
continue文 ループの先頭に戻る
値のコンソール表示 print()、println()とは?
インクリメント・デクリメント演算子 インクリメント、デクリメント演算子について解説
繰り返し処理に使用するfor文について解説-画像

for文

繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。

繰り返し処理に使用するwhile文について解説-画像

while文

繰り返し処理に使用するwhile文について解説

繰り返し処理に使用するdo~while文について解説-画像

do~while文

繰り返し処理に使用するdo~while文について解説

九九(くく)の表を作る方法を解説-画像

九九(くく)の表を作る

九九(くく)の表を作る方法を解説

掛け算なしで九九(くく)の表を作成-画像

九九(くく)の表を作る2

掛け算を使わないで九九(くく)の表をコンソール出力する方法を説明

2次元配列で九九(くく)の表-画像

九九(くく)の表を作る3

九九の計算結果を2次元配列に入れて、その値をコンソール出力する方法を説明

市松模様のテキスト表示方法を紹介-画像

市松模様(テキスト版)

和柄の一つである市松模様のテキスト文字で表現する方法を紹介しています。

テキストを円を描く-画像

円を描く(テキスト版)

塗りつぶした円をテキスト文字で表現する方法を紹介しています。

三角形を描く(テキスト版) その1-画像

三角形を描く(テキスト版) その1

for文を使ってテキストの直角三角形を表現する方法を解説しています。底辺が下になる直角三角形です。

三角形を描く(テキスト版) その2-画像

三角形を描く(テキスト版) その2

for文を使ってテキストの直角三角形を表現する方法を解説しています。底辺が上になる直角三角形です。

■新着情報

2021.06.18 変数の初期値 変数に値を代入しないで計算
2021.05.28 短針と長針の角度 短針と長針の角度は?
2021.05.19 各位(くらい)を求める 1の位の値は?10の位は?

■広告

 

 

 

 

 

 

 

 

 

Topへ