最近有一个减肥的朋友想要知道自己的BMI是多少,问我能不能给他做一个计算BMI的工具(无中生友)。于是用Java简单写了一个。一起来看看吧。
身体质量指数是BMI指数(身体质量指数,简称体质指数),是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。
计算公式为:BMI=体重(千克)除以身高(米)的平方。
为了方便使用我把整个小项目整合成了一个文件,复制到记事本里可以直接运行。
import java.io.*;
/**
* 本程序实现简单的BMI计算器。
* |-实现了用户键盘输入数据;
* |-实现了BMI保留一位小数点
* |-实现了Java标准输出到文件
* |-实现了工厂设计模式,减少耦合
* |-添加了对异常的处理
* @author chuchu
*
*/
public class Test {
public static void main(String[] args) {
new Menu();
}
}
class Menu {
private Person per = null;
private BMIService bs = null;
private double BMI = 0.0;
private PrintUtil out = null;
public Menu() {
this.show();
}
public void show() {
System.out.println("***欢迎使用BMI计算器,请输入相关信息***");
String name = InputUtil.getInfo("请输入姓名:");
int age = Integer.parseInt(InputUtil.getInfo("请输入年龄:"));
double height = Double.parseDouble(InputUtil.getInfo("请输入身高(米):"));
double weight = Double.parseDouble(InputUtil.getInfo("请输入体重(kg):"));
bs = Factory.getInstance();
double b = bs.getBMI(height, weight);
BMI = Math.round(b * 100) / 100;
String Evl = bs.getEvaluate(BMI);
per = new Person(name, age, height, weight, BMI, Evl);
System.out.println("***信息创建成功***");
System.out.println("您的BMI为:" + BMI);
System.out.println("您的身体状况:" + Evl);
System.out.println("正在将您的文件输出为文本。。。。");
out = Factory.getPrintInstance(per);
if (out.print())
System.out.println("文件输出成功,地址为" + out.getPATH());
else {
System.out.println("文件输出失败!");
show();
}
}
}
class Factory {
private Factory() {
}
public static BMIService getInstance() {
return new BMIServiceImpl();
}
public static PrintUtil getPrintInstance(Person per) {
return new PrintUtil(per);
}
}
interface BMIService {
public double getBMI(double height, double weight);
public String getEvaluate(double BMI);
}
class BMIServiceImpl implements BMIService {
private static final String THIN = "您的体型偏瘦,请增加营养摄入,加强锻炼!";
private static final String NORMAL = "您的体型正常,请继续保持!";
private static final String FATTY = "您已偏胖,请改变不健康的生活习惯,加强锻炼!";
private static final String OBESITY = "您的体型肥胖,相关疾病风险显著增加!";
@Override
public double getBMI(double height, double weight) {
return weight / (height * height);
}
@Override
public String getEvaluate(double BMI) {
if