せめて、 Java らしくって感じで書いてたら丸一日費やしてしまった。
値入力の処理まで学習進まず。
頑張ってはみたものの正直アクセス修飾子とか例外処理、列挙型の理解とか
怪しいのでちゃんと書けてるか全く持って自信なし。
Eclipse 入れたのにサクラエディタしか使ってないのもどうかと思った。>俺
BmiChecker.java
/*--------------------------------------------------------------------------------- BmiChecker version 0.01 Apr 30, 2012 by DumBo ---------------------------------------------------------------------------------*/ class BmiChecker { public static void main(String[] args) { Bmi bmi = new Bmi(); //タイトルの表示 System.out.printf("BmiChecker ver0.01 by DumBo\n\n"); bmi.setSex(Sex.MALE); //性別の登録 bmi.setHeight(185.0); //身長の登録 bmi.setWeight(75.0); //体重の登録 System.out.printf(" Sex : %s\n", bmi.getSex()); System.out.printf(" Height : %.1f cm\n", bmi.getHeight()); System.out.printf(" Weight : %.1f kg\n\n", bmi.getWeight()); System.out.printf(" Bmi : %.1f\n", bmi.getBmi()); System.out.printf(" IdealWeight : %.1f kg\n", bmi.getIdealWeight()); System.out.printf(" NecessaryCalory : %.1f kcal\n\n", bmi.getNecessaryCalory()); System.out.printf(" Judge : %s\n", bmi.getJudge()); } } enum Sex { MALE(22.0d), FEMALE(21.0d); private final double idealBmi; private Sex(double idealBmi) { this.idealBmi = idealBmi; } public double getIdealBmi() { return idealBmi; } } class Bmi { private enum Judge { SLENDER("Slender"), STANDARD("Standard"), PLUMP("Plump"), FAT("Fat"); private final String text; private Judge(String text) { this.text = text; } public String getText() { return text; }; } private Sex sex; private double height; private double weight; public Sex getSex() { return sex; } public void setSex(Sex sex) { this.sex = sex; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } public double getNecessaryCalory() { return getIdealWeight() * 30; } public double getIdealWeight() { return height * height * sex.getIdealBmi() / 10000; } public String getJudge() { String judge; double bmi = getBmi(); if (bmi < 20.0d) { judge = Judge.SLENDER.getText(); } //BMI値が20未 満 = やせ else if(bmi >= 20.0d && bmi < 24.0d) { judge = Judge.STANDARD.getText(); } //BMI値が20以 上24未満 = 普通 else if(bmi >= 24.0d && bmi < 26.4d) { judge = Judge.PLUMP.getText(); } //BMI値が24以 上26.4未満 = 過体重 else { judge = Judge.FAT.getText(); } //BMI値が26.4 以上 = 肥満 return judge; } public double getBmi() { //例外のスロー if(height == 0.0d) { throw new IllegalArgumentException("Divide by zero"); } return weight / height / height * 10000; } }