コース一覧
    Java入門:繰り返しとメソッド
    BMI を計算するメソッド

    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分

    BMI を計算するメソッド

    同じ式を 3 か所に書くと、直すのも 3 か所

    税込の合計金額を出す場面を考えます。カートの画面、注文確認の画面、送信するメールの本文。この 3 か所で unitPrice * count * 1.1 と直接書いてしまうと、税率が変わった日に、この式を全部探し出して直すことになります。1 か所でも見落とせば、その画面だけ古い金額を出し続けます。

    メソッドにしておけば、直す場所は 1 つです。

    Java

    public static double totalWithTax(int unitPrice, int count) {
        return unitPrice * count * 1.1;
    }

    計算式という知識が、プログラムの中に 1 つだけ存在している状態を作る。これが計算メソッドを書く一番の理由です。

    表示するメソッドは、正しさを確かめられない

    同じ計算でも、次のように書くと様子が変わります。

    Java

    public static void printTotal(int unitPrice, int count) {
        System.out.println("合計は " + unitPrice * count * 1.1 + " 円です");
    }

    計算と表示が 1 つのメソッドに同居しています。呼んでも手元には何も返ってこないので、テストから「答えが合っているか」を確かめる手段がありません。文言を変えたくなったときも、計算の入ったメソッドを触ることになります。

    計算するメソッドは値を返すだけにして、表示は別のメソッドに任せる。こう分けておけば、税率を直す作業と文言を直す作業が、それぞれ片方に閉じます。

    単位は、呼ぶ側とメソッドのどちらが持つか

    計算メソッドを書くときに必ず決めることが、もう 1 つあります。受け取る値の単位です。

    長さを受け取るメソッドなら、cm で受けるのか m で受けるのかを先に決めなければなりません。メソッドの中で 100 で割って変換する手もありますが、その瞬間そのメソッドは「計算する」と「単位を直す」の 2 つの仕事を抱えます。仕様が増えたときに、どちらの都合で壊れたのかが分からなくなるのはこういうときです。

    単位を揃えるのは呼ぶ側に任せて、メソッドは公式だけを持つ。今回の課題もこの方針で作られています。仕事が 1 つに絞られたメソッドは短く、読めば意味が分かり、テストも 1 行で書けます。

    解説

    単位を取り違えても、型さえ合っていればプログラムは動いてしまいます。落ちないぶん厄介で、答えの桁だけが静かにずれます。値がおかしいのにエラーが出ないときは、まず単位を疑ってください。

    やってみよう

    今回は、体重と身長から BMI を返すメソッドを書きます。身長は m 単位で渡される前提なので、メソッドの中で単位を直す必要はありません。戻り値は double です。

    いきなり Java を書かず、まず BMI の求め方を日本語で 1 行にしてみてください。それをそのまま式に置き換えるだけで済みます。書けたら、身長を cm のつもりで渡すとどんな値が返るかも試しておくと、単位の怖さが実感できます。

    要件

    1. Solution クラスに public static double bmi(double weight, double height) を実装する
    2. BMI = 体重 / (身長 * 身長) の公式を使って計算する
    3. 戻り値は double 型。身長は m 単位で渡される前提にする (cm 変換はメソッド内では行わない)

    ヒント

    身長の 2 乗を計算するときは weight / height * height のようにカッコを省略すると左から処理されて結果が weight になってしまうので、必ず (height * height) のように丸カッコで囲みます

    Math.pow(height, 2) を使っても同じ計算ができます。weight / Math.pow(height, 2) という書き方も覚えておくと、3 乗以上の公式で役立ちます

    引数の型を double にしているので整数除算の心配はありません。値を計算したら return で返すだけ、1 行で書ける問題です

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

    関連レッスン

    • 第 5 章 まとめクイズ

      第 5 章「メソッド」で学んだ基礎・引数・戻り値・オーバーロード・BMI 実例を 1 問の 4 択クイズで総復習する章末まとめ。

    • メソッドクイズ

      メソッドの章で学んだ定義 / 引数 / 戻り値 / オーバーロード / static を 4 択クイズ 1 問で総復習する章末まとめ。

    • メソッドのオーバーロード

      同じ名前で引数違いの複数バージョンを定義する「オーバーロード」を学び、足し算メソッド add の 3 連発を題材にシグネチャの考え方を体に馴染ませる。

    • 複数の引数を取るメソッド

      幅と高さの 2 つを受け取って長方形の面積を返すメソッドを書きながら、複数引数の書き方と意図の伝え方を身につけよう。

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

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

    • メソッドクラスに属する関数
    • テストバグを見つける工程
    • 戻り値呼び出し元への返答を表す点線矢印
    • クラスデータと振る舞いを束ねる単位
    main.java
    エディタを読み込んでいます

    メモ

    BMI を計算するメソッド

    ⌘S で保存