【JAVA】-- 计算BMI指标(9.20PTA习题)

题目介绍

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

题目思路解析

  1. 计算BMI,首先要能够从键盘读取到输入值
  2. 读取到之后,判断输入值是否在合理范围内
  3. 合理数值代入公式进行计算
  4. 得到的BMI值和标准进行比较,判断其是“thin,fit,overweight,fat” 的哪个类型并输出

代码设计

· 一开始并没有使用BMI类,而是将所有操作放在了main当中,结果就是PTA不给过,我自己还检查不出bug来。
· 于是就把各种相关操作放在了BMI类当中,相当于“食材准备”,不得不说,有条理点儿还是很好的。
· 至少我检查bug的时间大大减少了。

  1. 设计BMI类
    · 其中包括“身高,体重”两个私有成员变量。
    · 一个无参构造方法
    · 一个有参构造方法,其中调用了设置身高体重的函数(setWH)
    · 设置身高和体重的函数setWH,其中包含条件判断,如果体重不在0 ~ 727公斤,身高不在0 ~ 2.72之间,就直接输出“input out of range”,否则就赋值给成员变量W,H。
    · 设置了返回身高和体重值的函数(虽然在本题中没有用到)
    · 最后,设置了BMI计算公式函数,返回BMI计算值。
  2. 设计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;
        }
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值