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 =============================
❌ テストに失敗したケースがあります
あなたの解答
現在のモード:● 自分のコード
99
1
2
3
4
5
6
7
8
9
10
›
⌄
⌄
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 回実行可能
