JAVA 我刚学java。碰到个问题,太绕了,希望你们帮帮我。谢谢了。

百度知道提问JAVA我刚学java。碰到个问题,太绕了,希望你们帮帮我。谢谢了。跪求大神答题。麻烦把答题思路备注一下。谢谢各位大神了!做一个死亡计算器。输出一个人现在的年... 百度知道 提问
JAVA 我刚学java。碰到个问题,太绕了,希望你们帮帮我。谢谢了。
跪求大神答题。麻烦把答题思路备注一下。谢谢各位大神了!做一个死亡计算器。输出一个人现在的年龄,身高(cm),体重(kg),是否吸烟,精神状态(一般,乐观,悲观,抑郁)。算出这个人什么时候归西。提示: 1)根据年龄计算出生日年份。 2)基数, 80年代的人活90岁。 90年代的人活95岁。 00年代的人活100岁。 其他年代的人活80岁。 3)根据身高体重算出BMI的值(BMI=体重(kg)/身高(m)的平方)。规定 BMI在18.5~24之间为正常人体重指数。 低于18.5为偏瘦。 BMI在24~26之间,为超重。 BMI在26~28为严重超重。 BMI>28为极度超重。 19岁以下,偏重,减5岁。 19-25岁,健康体重,不变。 25-30岁,超重,减6岁。 30-39岁,严重超重,减8岁。 40及40岁以上,极度超重,减10岁。 4)吸烟者减10岁,不吸烟不变。 5)精神状态(一般,乐观,悲观,抑郁) 一般不变, 乐观加10岁。 悲观减5岁。 抑郁减10岁。 最后输出死亡年份
我刚开始学,今天讲的if……elseif。给我整蒙了,希望网上的朋友帮一下
展开
 我来答
百度网友84992825a
2018-03-09 · TA获得超过194个赞
知道小有建树答主
回答量:83
采纳率:100%
帮助的人:36.7万
展开全部

我觉得再加一条程序员减20岁吧( ͡° ͜ʖ ͡°)。

简单说就是一定要把问题分开,使自己代码设计思路清晰。

具体的就是把所有的判定条件分开来,每一个做一个判定函数。比如BMI和年龄,可以写成

int livelongByBMI(double weight, double height,int age){
    double BMI = weight / ( height * height );
    if( age < 19 ) {
        if( BMI > 24) return -5;
    }
    else if( age < 25 ) {
    
    }
    else if ( age < 30) {
         if( BMI > 24 ) return -6;
    }
    ///...
    return 0;
}

基数,吸烟和精神状态同理。精神状态可以用枚举类型(enum)定义。

最后在把一个人数据输入到各个函数中加起来就可以了。

完整程序

import java.util.Calendar;
public class DeathCalculator {
/**
 * 
 * @param age 年龄
 * @param weight 体重
 * @param height 身高
 * @param isSmoking 吸烟否
 * @param emotion 情绪
 * @return
 */
public static int liveestimate( int age, double weight, double height, 
boolean isSmoking, String emotion){
return fixByAge(age) + fixByBMI(weight, height, age) 
        + fixBySmoke(isSmoking) + fixByEmotion(emotion);
}
enum Emotion {
NORMAL     ("n",  0),//这里定义了情绪的种类,对应的输入关键词和修正值
OPTIMISTIC ("o", 10),//比如乐观的,输入为 "o",修正值为+10
PESSIMISTIC("p", -5),
DEPRESSED  ("d",-10);
String name;
int fix;
Emotion(String s0, int fix0){
name = s0;
fix = fix0;
}
public String getName(){
return name;
}
public int getFix(){
return fix;
}
};
    private static int fixByAge(int age){
     int fix = 0;
     int year = Calendar.getInstance().get(Calendar.YEAR);
     int bornyear = year - age;
     if (bornyear < 1980 ) {
     fix = 80;
     }
     else if (bornyear < 1990 ) {
     fix = 90;
     }
     else if (bornyear < 2000 ) {
     fix = 95;
     }
     else if (bornyear < 2010 ) {
     fix = 100;
     }
     return fix;
    }
private static int fixByBMI(double weight, double height, int age){
        double BMI = weight / ( height * height );
        int fix = 0;
        if( age < 19 ) {
            if( BMI > 24) fix = -5;
        }
        else if( age < 25 ) {}
        else if ( age < 30) {
            if( BMI > 24 ) fix = -6;
        }
        else if ( age < 39 ) {
         if (BMI > 26 ) fix = -8;
        }
        else {
         if(BMI > 28) fix = -10;
        }
        return fix;
    }
private static int fixBySmoke(boolean isSmoking) {
     return isSmoking?-10:0;
    }
private static int fixByEmotion(String emotion) {
     for(Emotion e : Emotion.values()) {
     if (e.getName().equals(emotion))
     return e.getFix();
     }
     return 0;
    }
    
}

测试样例

public class Main {
public static void main(String[] args) {
System.out.println(DeathCalculator.liveestimate(16, 74, 1.8, false, "o"));
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式