コース一覧
    Java入門:配列とコレクション
    Javaで配列の合計・平均を求める方法(forループ)

    Java入門:配列とコレクション

    配列とコレクションの扱いを学び、複数のデータを安全に整理・検索・集計できるようにします。

    1
    配列
    01. 配列の基本5分
    02. 配列の要素にアクセス5分
    03. 配列を for で走査5分
    04. Javaで配列の合計・平均を求める方法(forループ)5分
    05. 配列の平均5分
    06. 配列の最大値5分
    07. 配列の線形探索12分
    08. 拡張 for ループ5分
    09. 配列クイズ5分
    10. 第 6 章 まとめクイズ5分
    2
    コレクション基礎
    01. ArrayList を使う5分
    02. List を走査する5分
    03. 要素の削除と検索5分
    04. HashMap の基本5分
    05. Map を走査する5分
    06. Set で重複を排除5分
    07. Collections クラスの便利メソッド5分
    08. コレクション基礎 まとめクイズ5分

    Javaで配列の合計・平均を求める方法(forループ)

    ループが終わると、途中まで数えた分が消えている

    1 週間の気温から、真夏日 (30 度以上) が何日あったかを数えるとします。素直に書くと、こうなりがちです。

    Java

    for (int i = 0; i < temps.length; i++) {
        int count = 0;
        if (temps[i] >= 30) {
            count++;
        }
    }

    動かしても、結果は 0 か 1 にしかなりません。int count = 0; がループの 中 にあるからです。1 周まわるたびに count は作り直され、0 に戻ります。前の周で数えた分は、次の周が始まった時点で消えています。

    数えた結果を最後まで残したいなら、箱はループの外に置く必要があります。

    答えを入れる箱を、ループの外に用意する

    正しい形はこうです。

    Java

    int count = 0;
    for (int i = 0; i < temps.length; i++) {
        if (temps[i] >= 30) {
            count++;
        }
    }
    System.out.println(count);

    やっていることは 3 つです。ループの前に箱を用意し、ループの中で中身を書き換え、ループが終わった時点の中身を答えとして使う。配列を 1 周なめて 1 つの答えを作るこの形を 累積 と呼びます。

    大事なのは、箱の中身を 前の周から引き継いで更新している ことです。count++ は「いまの値に 1 足す」という意味で、それまでの結果を土台にしています。ここを count = 1; と書いてしまうと毎周同じ値で上書きされ、最後の 1 周の結果しか残りません。配列を回したのに答えがいつも同じ、という症状が出たら、まずここを疑ってください。

    数える代わりに足す、条件に合うものだけ拾う。ループの中の 1 行を差し替えるだけで、集計はひととおり書けるようになります。

    空の配列では、初期値がそのまま答えになる

    要素が 0 個の配列を渡すと、ループは 1 周も回りません。箱の中身は、用意したときの値のまま返ることになります。

    つまり、最初に何を入れておくかが、空の配列に対する答えそのもの です。真夏日を数えるなら 0 日、これは int count = 0; の 0 がそのまま返ります。特別な分岐を書かなくても答えが合うのは、初期値をたまたま正しく選んでいたからです。

    逆に言えば、初期値は「何もなかったときの答え」として選ぶものです。0 から始めるのが自然かどうかを、集計の種類ごとに考える癖をつけてください。ここを何となく 0 にしておくと、後で答えの合わない集計を書くことになります。

    解説

    途中の値が見たくなったら、ループの中に System.out.println(i + " " + count); を 1 行入れてみましょう。1 周ごとの箱の中身が並ぶので、引き継げているかどうかが一目で分かります。

    やってみよう

    今回は、配列の中身をすべて足した合計を返すメソッドを書きます。上の例と違うのは、ループの中で何をするかだけです。

    空の配列を渡したときは 0 が返ります。ただしそれは、空の配列用の分岐を足したからではなく、初期値をそう選んだからです。その違いを意識して書いてみてください。書けたら、負の数だけが入った配列でも正しい答えになるか確かめておきましょう。

    要件

    1. クラス名は Solution、メソッド名は arraySum、引数は int[] arr ひとつにすること
    2. メソッドの戻り値の型は int で、配列の中身の合計を返すこと
    3. 空配列 {} のときは 0 を返すこと (ループに入らないケースに対応)

    ヒント

    まず `int sum = 0;` で合計用の変数を初期化しましょう。初期化を忘れるとコンパイルエラーになります

    `for-each` (`for (int x : arr) { ... }`) を使うとインデックスを書かずに配列の中身を 1 つずつ取り出せます

    ループの中身は `sum += x;` または `sum = sum + x;` のどちらでも OK。ループの後ろで `return sum;` を忘れずに書きましょう

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

    関連レッスン

    • 配列の平均

      配列の要素を全部足して、要素数で割って平均を求める。空配列のときの 0 除算を避けることと、整数除算ではなく小数として計算するキャストの考え方を身につけよう。

    • 配列の最大値

      配列の中から一番大きい値を探そう。仮の最大値を更新していくアルゴリズムを身につける。

    • 配列の線形探索

      配列を先頭から順番に見ていき、目的の値があれば位置 (index) を、なければ -1 を返す線形探索アルゴリズムを書こう。

    • 拡張 for ループ

      配列の中身を頭から順番にぜんぶ見たいときに最適な、拡張 for (for-each) 文の書き方と使いどころを学ぼう。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • 配列サイズ固定の同型データの集まり
    • メソッドクラスに属する関数
    • クラスデータと振る舞いを束ねる単位
    • 引数位置引数=順番で渡す。
    • 戻り値呼び出し元への返答を表す点線矢印
    main.java
    エディタを読み込んでいます

    メモ

    Javaで配列の合計・平均を求める方法(forループ)

    ⌘S で保存