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。给我整蒙了,希望网上的朋友帮一下 展开
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。给我整蒙了,希望网上的朋友帮一下 展开
1个回答
展开全部
我觉得再加一条程序员减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"));
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询