コース一覧
    Java入門:条件分岐
    FizzBuzz の判定部分

    Java入門:条件分岐

    条件分岐の書き方を学び、入力や条件に応じて処理を選べるプログラムを作れるようにします。

    1
    条件分岐
    01. if 文の基本5分
    02. if-else 文5分
    03. else if で複数分岐5分
    04. 成績判定プログラム12分
    05. うるう年を判定する5分
    06. switch 文5分
    07. 三項演算子5分
    08. じゃんけんの勝敗判定15分
    09. FizzBuzz の判定部分5分
    10. 第 3 章 まとめクイズ5分

    FizzBuzz の判定部分

    上から書くと、重なった数が下の条件に届かない

    3 の倍数なら Fizz、5 の倍数なら Buzz、両方なら FizzBuzz。ルールは 3 行で言い切れます。急所は、両方に当てはまる数が存在する ことです。

    条件が重なっているとき何が起きるかを、別の数字で確かめます。2 の倍数なら Tick、7 の倍数なら Tock、両方なら TickTock というルールを、思いついた順に書いた場合です。

    Java

    if (n % 2 == 0) {
        return "Tick";
    } else if (n % 2 == 0 && n % 7 == 0) {
        return "TickTock";
    }

    14 を渡すと "Tick" が返ります。14 は 2 でも 7 でも割り切れるのに、最初の枝で確定してしまい、下の枝には永久に届きません。"TickTock" が返る日は来ないので、この行は書いた意味がなくなっています。

    else if の連鎖は、上から順に見ていって最初に当たった枝だけを実行します。範囲が重なるときは、当てはまる数が少ないほうを先に 置きます。この例なら、2 つの枝を入れ替えるだけで直ります。

    「両方」は == 0 を 2 回書く

    && の左右には boolean が必要です。余りをそのまま置くことはできません。

    Java

    if (n % 2 && n % 7) {   // int を真偽値としては扱えない

    「2 で割った余りが 0」まで書き切って、はじめて true か false かを聞く 1 つの問いになります。== 0 は 2 つとも必要です。

    ちなみに n % 2 == 0 && n % 7 == 0 は n % 14 == 0 と書いても同じ結果です。2 と 7 に 1 以外の共通の約数が無いので、両方で割り切れることと、掛け合わせた数で割り切れることが一致します。

    数をそのまま返せない

    このメソッドの戻り値は String です。どのルールにも当てはまらない数は、数字のままではなく文字列にして返す必要があります。

    Java

    String s = String.valueOf(42);   // "42"

    return n; と書くと int cannot be converted to String で止まります。String.valueOf(n) を通してください。

    解説

    4 つの枝を if だけで並べても動きます。ただし else if でつなぐと「ここまでの条件はどれも外れた」という情報が読み手に伝わるので、後から読む人の負担が減ります。

    やってみよう

    fizzbuzz(int n) を完成させてください。今回は数を 1 つ渡されたときの答えを返すところまでです。

    1. 4 つの答えを、当てはまる数が少ない順に並べ替える
    2. 「3 でも 5 でも割り切れる」を && で書き、いちばん上に置く
    3. 残りの 2 つを else if で続け、最後の else で数を文字列にして返す
    4. 実行して 15 9 10 7 1 の 5 件を通す

    通ったら 30 や 45 のような 15 の倍数も呼んでみてください。ここが "Fizz" になっていたら、並べ替えがまだ効いていません。上の 14 の例とまったく同じことが起きています。

    要件

    1. クラス名は Solution、メソッド名は fizzbuzz、引数は int n 1 つ、戻り値の型は String
    2. 判定は FizzBuzz → Fizz → Buzz → それ以外、の順で行うこと (FizzBuzz を最初に判定しないと 15 のときに Fizz が返ってしまう)
    3. どれにも当てはまらないときは String.valueOf(n) のように n を文字列に変換して返すこと

    ヒント

    「割り切れる」は剰余演算子 `%` を使い、`n % 3 == 0` のように余りが `0` かどうかで判定します

    `3` でも `5` でも割り切れる条件は `n % 3 == 0 && n % 5 == 0` と書きます。`&&` の左右にはそれぞれ完結した `boolean` 式を書く必要があるので、`==` を省略しないでください

    `int` を `String` に変換するときは `String.valueOf(n)` を使います。`return n;` のように `int` をそのまま返すと型エラーになります

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

    関連レッスン

    • 第 3 章 まとめクイズ

      第 3 章で学んだ if / else if / switch / 三項演算子 / うるう年 / FizzBuzz を 1 問の 4 択クイズで総復習する章末まとめ。

    • じゃんけんの勝敗判定

      複数の `if` を組み合わせて、3 すくみの勝敗を判定するロジックを書こう。

    • 三項演算子

      Java の三項演算子 `条件 ? 真の値 : 偽の値` を使って、if-else を 1 行で書けるようになろう。

    • switch 文

      値による多分岐を簡潔に書く switch 文を学び、case と break、default の使い方をマスターしよう。

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

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

    • メソッドクラスに属する関数
    • 戻り値呼び出し元への返答を表す点線矢印
    • クラスデータと振る舞いを束ねる単位
    • 引数位置引数=順番で渡す。
    main.java
    エディタを読み込んでいます

    メモ

    FizzBuzz の判定部分

    ⌘S で保存