作りたいもの
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年)ほど
お付き合いいただければ幸いです。