コース一覧
    Java入門:繰り返しとメソッド
    1 から N までの合計

    Java入門:繰り返しとメソッド

    forやwhileの繰り返しとメソッドを学び、処理を反復と部品に分けて書けるようにします。

    1
    繰り返し
    01. for 文の基本5分
    02. 1 から N までの合計5分
    03. 九九の段を作る5分
    04. while 文5分
    05. カウントダウン5分
    06. do-while 文5分
    07. 二重ループ5分
    08. break と continue5分
    09. FizzBuzz 完成5分
    10. 繰り返しクイズ5分
    11. 第 4 章 まとめクイズ5分
    2
    メソッド
    01. メソッドを定義する5分
    02. 引数を受け取るメソッド5分
    03. 戻り値を返す5分
    04. 複数の引数を取るメソッド5分
    05. メソッドのオーバーロード5分
    06. メソッドクイズ5分
    07. BMI を計算するメソッド5分
    08. 第 5 章 まとめクイズ5分

    1 から N までの合計

    毎回 0 に戻ってしまう

    繰り返しの結果を 1 つの値にまとめたいときは、途中経過を貯めておく変数を用意します。この変数を置く場所を 1 行間違えると、答えは必ず最後の 1 周ぶんだけになります。

    1 から 20 までのうち、4 で割り切れる数が何個あるかを数える例で見てみます。

    Java

    int count = 0;
    for (int i = 1; i <= 20; i++) {
        if (i % 4 == 0) {
            count++;
        }
    }
    // count は 5

    int count = 0; が for の 外 にあることが要です。これを中括弧の内側に書くと、こうなります。

    Java

    for (int i = 1; i <= 20; i++) {
        int count = 0;      // 毎周ここで作り直される
        if (i % 4 == 0) {
            count++;
        }
    }
    // ここでは count が見えない

    1 周ごとに宣言し直されて 0 に戻るので、count は多くても 1 にしかなりません。しかも中括弧の中で宣言した変数はループを抜けると消えるため、最後に読むこともできません。

    貯める変数は、ループの外で用意し、ループの中で書き換え、ループを抜けてから読みます。この 3 つが別々の行にある形が、繰り返しで集計するときの基本の形です。

    周ii % 4周の終わりの count
    3330
    4401
    5511
    8802

    count は毎周ゼロから作り直されるのではなく、前の周の値の上に積み上がっています。count++ は count = count + 1 の短い書き方で、右側の count が前の周までの値です。1 以外を足したいときは次のように書きます。

    Java

    count += 3;   // count = count + 3 と同じ

    1 周も回らないときは、初期値がそのまま残る

    for は、最初に条件を確かめてから本体に入ります。条件が最初から成立しなければ、本体は 1 度も動きません。

    そのとき貯める変数は用意したときの値のまま残り、それがそのまま答えになります。だから初期値は「まだ何も起きていないときの答え」として正しい値を選びます。個数を数えるなら 0、掛け合わせていくなら 1 です。

    解説

    大きな数を扱うときは int の上限に注意してください。約 21 億を超えると符号が反転してマイナスになります。桁が伸びそうなら long を使います。

    やってみよう

    sumOneToN(int n) を完成させて、1 + 2 + ... + n の合計を返してください。

    1. for の外に、合計を貯める変数を用意する
    2. ループの中で、その変数に i を足し込む
    3. ループを抜けてから、その変数を返す
    4. 実行して 10 1 100 0 5 の 5 件を通す

    n 自身も足す必要があるので、条件を i < n にすると答えが n だけ足りません。sumOneToN(10) が 55 ではなく 45 になったら、まずそこを疑ってください。n が 0 のケースは、初期値を正しく選んでいれば何も足さなくても通ります。

    要件

    1. クラス名は Solution、メソッド名は sumOneToN、引数は int n ひとつにすること
    2. メソッドの戻り値の型は int で、1 + 2 + ... + n の合計を返すこと
    3. n が 0 のときは 0 を返すこと (ループが 1 周も回らないケースに対応)

    ヒント

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

    `for (int i = 1; i <= n; i++)` のように、継続条件は `i <= n` にします。`i < n` だと最後の `n` が足されず答えが 1 つズレます

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

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

    関連レッスン

    • 九九の段を作る

      `for` ループの応用として、引数 `n` の段の九九を空白区切りの文字列で組み立てる方法を学びます。

    • while 文

      while 文の構文と使いどころを学びながら、整数の桁数を数えるアルゴリズムを実装してみよう。

    • カウントダウン

      Java の `while` 文を使って、n から 1 までを空白区切りでつないだ文字列を作るカウントダウン処理を学びます。

    • do-while 文

      `do-while` 文を使って「最低 1 回は実行したい繰り返し」を書いてみよう。条件チェックのタイミングが `while` とどう違うのかを身体に染み込ませる回。

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

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

    • 変数データに名前をつけて参照する仕組み
    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • クラスデータと振る舞いを束ねる単位
    • メソッドクラスに属する関数
    • 引数位置引数=順番で渡す。
    • 戻り値呼び出し元への返答を表す点線矢印
    main.java
    エディタを読み込んでいます

    メモ

    1 から N までの合計

    ⌘S で保存