002-001-005
Scannerキーボード入力:nextDoubleでBMI計算機(System.in使用)
上級
問題説明
解説
この問題では: 名前・身長(メートル)・体重(キログラム)・年齢を標準入力から読み込み、BMI(体格指数)を計算してUnderweight/Normal/Overweightの3段階で判定し、健康診断カード形式で標準出力に表示するプログラムを作成します。
nextDouble()メソッド
nextDouble()は小数(double型)を読み込むメソッドです。身長や体重など、小数が必要なデータの入力に使用します。
実装例
import java.util.Scanner;public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);// 各データを読み込む String name = sc.nextLine(); double height = sc.nextDouble(); double weight = sc.nextDouble(); int age = sc.nextInt(); // BMIを計算 double bmi = weight / (height * height); // 判定を決定 String status; if (bmi < 18.5) { status = "Underweight"; } else if (bmi < 25.0) { status = "Normal"; } else { status = "Overweight"; } // 健康診断カードを表示 System.out.println("===== Health Check Card ====="); System.out.println("Name: " + name); System.out.println("Height: " + height + "m"); System.out.println("Weight: " + weight + "kg"); System.out.println("Age: " + age + " years old"); System.out.printf("BMI: %.1f%n", bmi); System.out.println("Status: " + status); System.out.println("=============================");
}
}
重要なポイント
- nextDouble(): 小数を読み込むメソッド
- double型の計算: 小数を含む計算結果も小数になる
- printf(): 小数の桁数を制御した出力(%.1fで小数第1位まで)
- 複数の条件分岐: if-else ifを使った段階的な判定
BMI計算の意味
BMIは体重と身長のバランスを示す指標です。この計算を通じて、実用的なプログラムの作成方法を学びます。
