2020.3.23
Javaプログラミング
多重ループ
多重ループはループの中にループがあるプログラムの構造です。入れ子、ネスト構造とも呼ばれます。ループの中にループを1つ書いた構造を2重ループ、2重ループの中にループを1つ書いた構造を3重ループといいます。さらにその構造の中にループを入れていくと4重ループ、5重ループ…となります。これらをまとめて多重ループといいます。
多重ループは、for文/while文/do~while文の中にループを書くことで作ることができます。その際、for文/while文/do~while文の組み合わせは任意です。for文の中にfor文、for文の中にwhile文、do~while文の中にwhile文など自由に組み合わせることができます。
for ( 外側の初期化式; 外側の継続条件式;外側の変化式 ) { for ( 内側の初期化式; 内側の継続条件式;内側の変化式 ) { 処理文1 処理文2 : } }
for ( 初期化式1; 継続条件式1; 変化式1 ) { for ( 初期化式2; 継続条件式2; 変化式2 ) { for ( 初期化式3; 継続条件式3; 変化式3 ) { 処理文1 処理文2 : } } }
for ( 外側の初期化式; 外側の継続条件式;外側の変化式 ) { for ( 内側1の初期化式; 内側1の継続条件式;内側1の変化式 ) { 処理文1 処理文2 : } for ( 内側2の初期化式; 内側2の継続条件式;内側2の変化式 ) { 処理文1 処理文2 : } }
for ( 外側の初期化式; 外側の継続条件式;外側の変化式 ) { // 2重ループ for ( 内側1の初期化式; 内側1の継続条件式;内側1の変化式 ) { for ( 内側2の初期化式; 内側2の継続条件式;内側2の変化式 ) { 処理文1 処理文2 : } } // 1重ループ for ( 内側3の初期化式; 内側3の継続条件式;内側3の変化式 ) { 処理文1 処理文2 : } }
Javaソースコード - 2重ループ
以下のJavaソースコードは、int型の変数iを1~5まで1ずつ増やしていく外側のループの中に、int型の変数jを1~3まで1ずつ増やしていく内側のループを作り、それらの変数の値をコンソール出力するものです。for文を使った2重ループの例です。
MultiLoop2.java
001 002 003 004 005 006 007 008 009 010 011 012 013
public class MultiLoop2 { public static void main( String[] args ) { // 外側のループ for ( int i = 1; i <= 5; i++ ) { // 内側のループ for ( int j = 1; j <= 3; j++ ) { System.out.println( "i=" + i ); System.out.println( "j=" + j ); System.out.println(); } } } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis MultiLoop2.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac MultiLoop2.java
実行
C:\talavax\javasample>java MultiLoop2
出力結果
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
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 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017
public class MultiLoop3 { public static void main( String[] args ) { // 1つめのループ for ( int i = 1; i <= 5; i++ ) { // 2つめのループ for ( int j = 1; j <= 3; j++ ) { // 3つめのループ for ( int k = 1; k <= 2; k++ ) { System.out.println( "i=" + i ); System.out.println( "j=" + j ); System.out.println( "k=" + k ); System.out.println(); } } } } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis MultiLoop3.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac MultiLoop3.java
実行
C:\talavax\javasample>java MultiLoop3
出力結果
i=1 j=1 k=1 i=1 j=1 k=2 i=1 j=2 k=1 i=1 j=2 k=2 i=1 j=3 k=1 i=1 j=3 k=2 i=2 j=1 k=1 i=2 j=1 k=2 i=2 j=2 k=1 i=2 j=2 k=2 i=2 j=3 k=1 i=2 j=3 k=2 i=3 j=1 k=1 i=3 j=1 k=2 i=3 j=2 k=1 i=3 j=2 k=2 i=3 j=3 k=1 i=3 j=3 k=2 i=4 j=1 k=1 i=4 j=1 k=2 i=4 j=2 k=1 i=4 j=2 k=2 i=4 j=3 k=1 i=4 j=3 k=2 i=5 j=1 k=1 i=5 j=1 k=2 i=5 j=2 k=1 i=5 j=2 k=2 i=5 j=3 k=1 i=5 j=3 k=2
以上です。
多重ループに関するコンテンツ
「多重ループ」に関係があるコンテンツをまとめています。
- 数字「0」から「9」を出力
- 10進数→2進数変換
- 五十音の表作る
- 「AA」から「ZZ」を出力
- 配列の値が全て同じか?
- 配列値の反転
- アルファベット「A」から「Z」を出力
- 同じマンハッタン距離の座標をプロット
- xy-座標の描画するクラス
- 2値化
- 2値化 その2
- ビットシフト
- breake文
- バブルソートとは
- 最も近い座標を探す
- コラッツ予想の確認
- テーブルによる色変換 その1
- continue文
- サイコロの出目確率
- 2つのサイコロの出目の和の確率
- ゾロ目の出る確率
- 整数の桁数を求める(for文を使用)
- 整数の桁数を求める(while文を使用)
- 0.0に近い値
- do~while文
- 縁付き画像変換
- 画像の2倍拡大
- ファイルのリストを取得
- 画像の上下反転
- フォルダとは?
- for文
- for文を使うプログラム
- グラデーション画像(横方向)
- グラデーション画像(放射状)
- グラデーション画像(4隅の色)
- グレースケール変換
- より自然なグレースケール変換
- RGBの平均値
- インデント
- 「じゃんけん」の作成 その2
- Javaプログラミングの基礎
- 学習用のJavaソースコード
- 九九(くく)の表を作る
- 九九(くく)の表を作る その2
- 九九(くく)の表を作る その4
- 九九(くく)の表を作る その5
- 値の探索(整数)
- ループ(繰り返し)
- 文字の間違い探し
- トランプの操作
- バビロニアの平方根
- 公約数
- フィボナッチ数列(配列)
- 最大公約数 その2
- ユークリッド互除法
- 円周率πを計算で求める その2
- 数学関数(複数の値の最小値と最大値)
- 数学関数(最頻値)
- ニュートン法
- ニュートン法で平方根
- ニュートン法で平方根 その2
- ニュートン法で平方根 その3
- 完全数
- 各位(くらい)の値を求める
- 整数の累乗
- 10のN乗かを判定
- 素数リスト作成
- N番目の素数
- 整数の平方根計算
- 数学関数(複数の値の合計と平均)
- 三角関数 計算方法
- 画像のミラー反転
- モンティ・ホール問題
- 足し算とビットシフトによる掛け算
- 画像をセピア色にする
- 画像の一部を切り出す
- N値化
- 画像の色反転
- ノイズ画像の作成
- 画像にノイズを加える
- 正確な割合のノイズ画像作成
- 同じ数の組み合わせ
- 指定色の画素数取得
- 塗りつぶし円
- 円模様(円の整列)
- 円模様2(隙間の少ない整列)
- 同心円模様
- 市松模様
- 水平線模様
- 傾き45°縞模様
- 垂直線模様
- 放射状模様
- ポーカーの役判定
- 素因数分解
- クイックソート
- 乱数で文字列を生成
- 再帰呼び出し
- 予約語と定数
- 神経衰弱 その3
- 神経衰弱 その5
- 画像をぼかす
- 空間フィルタリング
- 平方表の作成
- 掛け算なしで平方表の作成
- 平方根表の作成
- ステンドグラス風画像
- 文字の置換
- 剰余(余り)計算プログラム
- 円を描く(テキスト版)
- 市松模様(テキスト版)
- 横縞模様(テキスト版)
- 三角形を描く(テキスト版) その1
- 三角形を描く(テキスト版) その2
- 三角形を描く(テキスト版) その3
- 三角形を描く(テキスト版) その4
- 2倍と左ビットシフトの速度
- 三角関数表の作成 その1
- 三角関数表の作成 その2
- 三角関数表の作成 その3
- 閏年(うるうどし)の判定
- 閏年(うるうどし)の判定 その2
- for文で変数名iがよく使われる理由
- while文
関連コンテンツ
2値化は、画像処理の1つの方法で、カラー画像を2つ色だけで表現する画像に変換することです。この記事では、2値の画像メモリを使って変換しています。
2020.10.13
ソースコードを読みやすくするインデントって?
このサイトのオリジナルクラスのMyBufferedImage0クラスを利用して、フルカラーの画像をセピア色に変換してをJPEGG形式のファイルに保存するプログラムを紹介しています。
2023.07.16