LoginSignup
0
0

More than 1 year has passed since last update.

【Java】身長/体重を入力したらBMIが分かるプログラム

Last updated at Posted at 2021-06-12

作りたいもの

1.身長と体重を入力する
2.BMIの計算結果を表示する
3.「低体重、普通体重、肥満」のどれかの評価を付ける

以下のソースコードは、Java独学2か月くらいの僕が書いたものです。
@shiracamus さんからアドバイスいただけたので、初学者の方は、ぜひ見比べてみてください。
(お~!ってなりますww)

ソースコード(※参考にしないほうがいいやつw)

Test1.java
import java.util.Scanner;

public class Test1{
    public static void main(String[] args) {
        try {
            @SuppressWarnings("resource")
            Scanner scan = new Scanner(System.in);

            System.out.print("身長(m):");
            double inputHeight = scan.nextDouble();

            System.out.print("体重(kg):");
            double inputWeight = scan.nextDouble();

            Bmi result = new Bmi(inputHeight, inputWeight);
            double resultBmi = result.getBmi(inputHeight, inputWeight);
            System.out.println("BMI:" + resultBmi);

            System.out.println();

            if(resultBmi < 18.5) {
                System.out.println("評価:低体重");

            }else if(resultBmi < 25) {
                System.out.println("評価:普通体重");

            }else {
                System.out.println("評価:肥満");
            }

        }catch(Exception e) {
            System.out.println("\nやり直せ");
        }
    }
}

class Bmi{
    public double weight;
    public double height;

    public Bmi(double height, double weight) {
        this.height = height;
        this.weight = weight;
    }

    public double getBmi(double height, double weight) {
        return weight / (height * height);
    }
}
実行結果.
身長(m):1.7 ←自分で入力
体重(kg):60 ←自分で入力
BMI:20.761245674740486

評価:普通体重

どうですかね??

おかしなところあれば、(優しい)コメントください。

個人的には、「double height」とかが何回も出てくるのが気にくわないですw

マネするべきソースコード

以下は、@shiracamus さんが書いてくれたソースコードになります。
こちらを参考にしてみてください。

ポイントは下記の通り
1.クラス名は直感的にみて分かりやすく命名する
2.インスタンス変数を理解し、コードが冗長にならないようにする

HealthChecker.java
import java.util.Scanner;

public class HealthChecker {
    public static void main(String[] args) {
        try {
            @SuppressWarnings("resource")
            Scanner scan = new Scanner(System.in);
            System.out.print("身長(m):");
            var height = scan.nextDouble();
            System.out.print("体重(kg):");
            var weight = scan.nextDouble();

            var body = new Body(height, weight);
            System.out.println("BMI:" + body.bmi());
            System.out.println();
            System.out.println("評価:" + body.style());
        } catch (Exception e) {
            System.out.println("\nやり直せ");
        }
    }
}

class Body {
    final public double weight;
    final public double height;

    public Body(double height, double weight) {
        this.height = height;
        this.weight = weight;
    }

    public double bmi() {
        return weight / (height * height);
    }

    public String style() {
        var bmi = bmi();
        if (bmi < 18.5) {
            return "低体重";
        } else if (bmi < 25) {
             return "普通体重";
        } else {
             return "肥満";
        }
    }
}

感想

コードを見ればわかる通り、圧倒的に美しいですね。
僕のソースコード(Test1.java)では、「height」と「weight」何回出てくるんだよって感じw

やっぱり、先輩プログラマーに見ていただけるのはとても貴重だなと感じました。一人でやっていると、
「エラーがでてないからOK」と思い、どうしても脳死になりがちです。。。
情報発信系のサイトの使い方としては、間違ってるかもしれませんが、あと半年(いや、1年)ほど
お付き合いいただければ幸いです。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0