题解 | #衡量人体胖瘦程度#

衡量人体胖瘦程度

http://www.nowcoder.com/practice/4d604603fae94a26b59b7bc18f363bc0

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNextInt()) {
            int weight = scan.nextInt();
            int height = scan.nextInt();
            double BMI = weight / Math.pow(height * 1.0 / 100, 2);
            
            //此处虽然可以用if语句实现,但是为了让代码更好,可以采用表驱动法
            double[] BMItable = { 18.5, 23.9, 27.9, 100};
            String[] degree = { "Underweight", "Normal", "Overweight", "Obese"};
            for(int i = 0; i < 4; i++) {
                if(BMI < BMItable[i]) {
                    System.out.println(degree[i]);
                    break;
                }
            }
        }
    }
}
全部评论
第十四行if(BMI < BMItable[i]) 可能存在BMI正好等于23.9/27.9的特殊情况,这种情况下,上述代码将会产生错误答案
点赞 回复 分享
发布于 2021-10-22 22:37
这个的话,我是查了BMI的标准计算方法,应该都是左闭右开的区间范围,也就是范围左边带等号。但是这一题的题目确实没有按照标准计算方法计算。因此严格来说,我的这个算法并不太符合这道题意。也就是说,我认为这道题出的有问题,之后我是按照BMI的标准区间计算得出的算法。如果按照这个题的要求,就只能用if语句。
点赞 回复 分享
发布于 2021-10-22 23:15

相关推荐

无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务