For文を使用して2次元配列から値を取得し、合計値を20にする

■概要

以下の2次元配列の値を使用して、合計値が20になるようなプログラムを実装する。
なお、配列の値をすべて使用しなくても良い。

{
    {1, 2},
    {3, 4, 5},
    {6, 7, 8}
}

■計算方法

以下表のうち、赤字の値「1, 2, 4, 5, 8」を使用すれば、合計値「20」となる。

index012
012
1345
2678
配列[0][2]には値が入っていないため、「 – 」とする

■処理イメージ

上記の2次元配列から「1, 2, 4, 5, 8」のみを取得する方法は、

  • for文を2つ用いる
    • ①配列要素ブロック分繰り返し( i:3回)
    • ②要素数分繰り返す( j )
      インデックス開始はブロックのインデックス「 i 」に合わせる

j の初期値をインデックス「 i 」をに合わせることで、該当の部分のみループで回すことが可能

0
0
0
0
1
1
1
1
2
2
i
i
j
j
0
0
1
1
3
3
4
4
2
2
5
5
1
1
0
0
1
1
6
6
7
7
2
2
8
8
2
2
1
1
2
2
2
2
2
2
Text is not SVG – cannot display

■フローチャート

実装するプログラムのフローチャートを示す。

開始
開始
2次元配列をセット
2次元配列をセット
合計値の初期値セット
合計値の初期値セット
配列のブロック分繰り返し
配列のブロック分繰り返し
配列の要素分繰り返し
配列の要素分繰り返し
合計値を合算
合計値を合算
合計値を出力
合計値を出力
終了
終了
合計値
合計値
コンソール
コンソール
Text is not SVG – cannot display

■サンプルコード

実装するプログラムのサンプルコードを以下に示す。

package main;

public class ForAdd20Main {


  public static void main(String[] args) {

    /*
     * 2次元配列の初期値セット [ [1, 2] [3, 4, 5] [6, 7, 8] ]
     */
    final int[][] datas = new int[][] {{1, 2}, {3, 4, 5}, {6, 7, 8}};

    // 合計の初期値をセット
    int total = 0;

    // 配列の要素ブロック分繰り返し
    for (int i = 0; i < datas.length; i++) {

      // 配列の要素分繰り返し
      for (int j = i; j < datas[i].length; j++) {

        // 合計値を加算
        total += datas[i][j];
      }
    }

    // 合計値を出力
    System.out.println("合計値:" + total);

  }
}

■実行結果

合計値:20

コメント