题目介绍
BMI(身体质量指数)计算方法:体重(以千克为单位)除以身高(以米为单位)的平方。
中国成人正常的BMI应在18.5-24之间,如果小于18.5为体重不足,如果大于等于24为超重,大于等于28为肥胖。请编写程序,测算身体状态。
输入格式
两个数值:体重(以千克为单位),身高(以米为单位),数值间以空格分隔。
例如:65.5 1.75。
注意:体重的世界纪录是727公斤,身高的世界纪录是2.72米。输入数据上限不得超过纪录,下限不得小于等于0;
输出格式:
输入数值超出范围 :输出“input out of range”。例如:-2 3或者125 5。
BMI小于18.5 :输出“thin”。
BMI大于等于18.5小于24 :输出“fit”。
BMI大于等于24小于28 :输出“overweight”。
BMII大于等于28 :输出“fat”。
输入样例
-2 8
输出样例
input out of range
题目思路解析
- 计算BMI,首先要能够从键盘读取到输入值
- 读取到之后,判断输入值是否在合理范围内
- 合理数值代入公式进行计算
- 得到的BMI值和标准进行比较,判断其是“thin,fit,overweight,fat” 的哪个类型并输出
代码设计
· 一开始并没有使用BMI类,而是将所有操作放在了main当中,结果就是PTA不给过,我自己还检查不出bug来。
· 于是就把各种相关操作放在了BMI类当中,相当于“食材准备”,不得不说,有条理点儿还是很好的。
· 至少我检查bug的时间大大减少了。
- 设计BMI类
· 其中包括“身高,体重”两个私有成员变量。
· 一个无参构造方法
· 一个有参构造方法,其中调用了设置身高体重的函数(setWH)
· 设置身高和体重的函数setWH,其中包含条件判断,如果体重不在0 ~ 727公斤,身高不在0 ~ 2.72之间,就直接输出“input out of range”,否则就赋值给成员变量W,H。
· 设置了返回身高和体重值的函数(虽然在本题中没有用到)
· 最后,设置了BMI计算公式函数,返回BMI计算值。 - 设计Main类
· 设置从键盘输入身高,体重
· 用有参构造方法,定义并创建BMI类对象People
· 设置if,判断W,H是否在规定范围之内,不在则直接使bmi为0,否则按照公式计算
· 计算后,设置if条件判断BMI所在范围,并输出对应文字。
代码
我学号23000227XX,同个学号编号就咳咳,巧了哈
import java.util.Scanner;
class BMI{
private double W;
private double H;
public BMI(){
//super();
}
public BMI(double W, double H){
//super();
setWH(W,H);
}
// 设置体重和身高函数
public void setWH(double W,double H){
if(W<=0 || W>727){
System.out.println("input out of range");
}
else{
if(H<=0 || H>2.72){
System.out.println("input out of range");
}
else{
this.W = W;
this.H = H;
}
}
}
// 返回体重函数
public Double getWeight(){
return W;
}
// 返回身高函数
/public double getHeight(){
return H;
}
// BMI计算函数
public double Bmi(){
return this.W/(this.H * this.H);
}
}
public class Main{
public Main(){}
public static void main(String[] args){
Scanner Reader = new Scanner(System.in);
double W = Reader.nextDouble();
double H = Reader.nextDouble();
BMI People = new BMI(W,H);
double bmi = 0;
if (W>0 || H>0){
bmi = People.Bmi();
if (bmi>0 && bmi < 18.5){
System.out.print("thin");
}
else if(bmi>=18.5 && bmi<24){
System.out.print("fit");
}
else if(bmi>=24 && bmi<28){
System.out.print("overweight");
}
else if(bmi>=28){
System.out.print("fat");
}
}
else{
bmi = 0;
}
}
}