1. 体重 60kg・身長 2.0m なら BMI = 15.0
  2. 体重 80kg・身長 2.0m なら BMI = 20.0
  3. 体重 50kg・身長 1.0m なら BMI = 50.0
  4. 体重 100kg・身長 2.0m なら BMI = 25.0 (肥満気味の境界)
  5. 体重 18kg・身長 1.0m なら BMI = 18.0
コース一覧
Java入門:基礎文法編
BMI を計算するメソッド

Java入門:基礎文法編

変数、制御構文、メソッド、クラス、継承、インターフェースなど Java とオブジェクト指向の基礎を、コードを書きながら学べる無料コースです。プログラミング初学者や、業務システム開発で Java を扱う必要がある社会人を対象としています。約 17 時間 (1 日 30 分 × 34 日) で 69 レッスンを修了でき、修了後は Spring などのフレームワーク学習や Java 認定試験への準備が無理なく進められます。

1
Hello, Java
01. はじめての Java プログラム5分
02. 複数行の出力5分
03. 変数を使った自己紹介5分
04. コメントを書く5分
05. 第 1 章まとめクイズ5分
2
変数と演算
01. 変数を宣言する5分
02. データ型の使い分け5分
03. 変数とデータ型クイズ5分
04. 四則演算と剰余5分
05. 税込価格を計算する5分
06. インクリメントとデクリメント5分
07. 比較演算子5分
08. 論理演算子5分
09. 演算子の優先順位5分
10. 文字列の連結5分
11. 型変換 (キャスト)5分
12. 第 2 章 まとめクイズ5分
3
条件分岐
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分
4
繰り返し
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分
5
メソッド
01. メソッドを定義する5分
02. 引数を受け取るメソッド5分
03. 戻り値を返す5分
04. 複数の引数を取るメソッド5分
05. メソッドのオーバーロード5分
06. メソッドクイズ5分
07. BMI を計算するメソッド5分
08. 第 5 章 まとめクイズ5分
6
配列
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分
7
クラスとオブジェクト
01. クラスを定義する5分
02. クラスにフィールドを持たせる12分
03. クラスにメソッドを定義する5分
04. インスタンスを作る5分
05. コンストラクタ5分
06. this キーワード5分
07. カプセル化 (private と getter)12分
08. Person クラスを作る5分
09. Product クラスで税込価格15分
10. 銀行口座クラス15分
11. toString のオーバーライド5分
12. クラスとオブジェクト クイズ5分
13. Java 入門 最終クイズ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 変換はメソッド内では行わない)

入出力例

bmi(60, 2) → 15 bmi(80, 2) → 20 bmi(50, 1) → 50 bmi(100, 2) → 25 bmi(18, 1) → 18

ヒント

身長の 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 択クイズで総復習する章末まとめ。

  • 配列の基本

    Java の配列の宣言、長さの取り方、インデックスでの要素アクセスを学び、最初の要素を返すメソッドを書いてみよう。

  • クラスを定義する

    Java の世界の基本単位、クラスを定義する意味と書き方を学ぼう。

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

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

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

メモ

BMI を計算するメソッド

⌘S で保存