Yomiage
メニュー

Java実践講座 03:条件分岐・繰り返し・メソッドで問題を分解する

更新 2026/9/27 6:22:11 公開

投稿者: しゅりりん

この回では、条件を整理し、同じ処理をメソッドへ切り出します。前提は第02回です。

入力と出力を先に書く

「送料を計算する」を実装するなら、購入額が入力、送料が出力です。購入額が5000円以上なら無料、それ未満なら500円、負の金額は不正と決めます。境界の5000円を含むのかが、記号選びより先に必要な情報です。

public class Main {
    static int shipping(int amount) {
        if (amount < 0) {
            throw new IllegalArgumentException("購入額は0以上です");
        }
        if (amount >= 5000) {
            return 0;
        }
        return 500;
    }

    public static void main(String[] args) {
        int[] amounts = {0, 4999, 5000, 8000};
        int totalShipping = 0;
        for (int amount : amounts) {
            int fee = shipping(amount);
            totalShipping += fee;
            System.out.println(amount + "円: 送料" + fee + "円");
        }
        System.out.println("送料合計: " + totalShipping);
    }
}

Main.javaで実行すると、送料は500、500、0、0、合計は1000です。returnはそのメソッドの処理を終えて値を返します。throwによる例外は第08回で詳しく学びます。早めに不正な入力を退けると、正常処理の入れ子が浅くなります。

繰り返しを終える条件

要素を順番に処理するなら拡張for、回数や添字が必要なら通常のfor、終了するまでの回数が不明ならwhileが候補です。whileでは、条件に関係する値がどこで変わるか確認してください。変わらなければ無限ループの可能性があります。

&& は両方が真、|| は少なくとも一方が真を表します。どちらも必要なときだけ右側を評価します。amount >= 0 && amount < 5000 のように、範囲の両端を明示すると読みやすくなります。複雑な条件には isFreeShipping のような名前を付けて意味を表しましょう。

メソッド内で作る変数は、原則そのブロック内で使います。合計をループの中で毎回0に戻すと累積できません。変数が生きる範囲、つまりスコープが処理の意味を決めます。

練習と解答

練習:会員なら3000円以上、非会員なら5000円以上で送料無料にします。判定すべき境界を列挙してください。

解答例:引数にbooleanのmemberを追加し、int threshold = member ? 3000 : 5000; として比較します。会員の2999・3000、非会員の4999・5000、0、負の値を確認します。会員かどうかと金額を独立した入力として扱うのが要点です。

公式資料

Java言語の基礎から分岐と反復の資料へ進めます。


Java全20回の目次 | 前の回 | 次の回

このブラウザでは Web Speech API が利用できません。

1 / 17 · 停止中