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は体重と身長のバランスを示す指標です。この計算を通じて、実用的なプログラムの作成方法を学びます。

テストケース例

※ 出力例はプログラミングの国際標準に準拠し英語で表示しています

入力:
Taro
1.75
68.5
30
期待される出力:
===== Health Check Card =====
Name: Taro
Height: 1.75m
Weight: 68.5kg
Age: 30 years old
BMI:22.4
Status: Normal
=============================
入力:
Alice
1.60
45.0
25
期待される出力:
===== Health Check Card =====
Name: Alice
Height: 1.6m
Weight: 45.0kg
Age: 25 years old
BMI:17.6
Status: Underweight
=============================
入力:
Bob
1.80
85.0
35
期待される出力:
===== Health Check Card =====
Name: Bob
Height: 1.8m
Weight: 85.0kg
Age: 35 years old
BMI:26.2
Status: Overweight
=============================
入力:
Test
1.70
53.5
20
期待される出力:
===== Health Check Card =====
Name: Test
Height: 1.7m
Weight: 53.5kg
Age: 20 years old
BMI:18.5
Status: Normal
=============================
入力:
User
1.65
68.0
40
期待される出力:
===== Health Check Card =====
Name: User
Height: 1.65m
Weight: 68.0kg
Age: 40 years old
BMI:25.0
Status: Normal
=============================
入力:
Min
1.50
40.0
18
期待される出力:
===== Health Check Card =====
Name: Min
Height: 1.5m
Weight: 40.0kg
Age: 18 years old
BMI:17.8
Status: Underweight
=============================
❌ テストに失敗したケースがあります
❌ エラー発生

あなたの解答

現在のモード: 自分のコード
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// ここにコードを書いてください

sc.close();
}
}
0 B / 5 MB

残り 9 回実行可能