我是编码的新手,我遇到了这个问题的任何问题。
这是问题所在。
考虑到个人身高(英寸)和体重(磅),计算他们的BMI。 BMI计算为BMI =(体重* 703)/(身高*身高)然后,根据他们的BMI,如果它小于18.5,则返回一条消息“你体重不足”。如果它至少不超过26,则返回一条消息“您的体重是健康的”。如果是26或更多,则返回一条消息“你超重。”
BMIResult(177,69)→“你超重。”
BMIResult(125,62)→“你的体重是健康的。”
BMIResult(95,64)→“你体重不足。”
提示:将BMI计算舍入到小数点后一位。确保消息返回完全一样。
我做错了什么!!这是我得到的错误。
错误:public String BMIResult(双倍体重,双倍高度){
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 此方法必须返回String
类型的结果可能的问题:理论上可能是if语句结构 允许运行到达方法的末尾而不调用return。 考虑在方法中添加最后一行返回some_value; 所以总会返回一个值。
这是我的错误消息上面的代码:
public String BMIResult(double weight,double height) {
double bmi=((weight*703)/(height*height));
if (BMI<18.5)
return "You are underweight.";
if (BMI>18.5 && BMI<26)
return "Your weight is healthy.";
if (BMI>=26)
return "You are overweight.";
}
即使我尝试从双字符串转换为字符串,它也不起作用。
答案 0 :(得分:1)
您应该尝试使用else
,编译器不知道您当前的一个条件必须评估为true
(因为发布时它们都是独立且未连接的语句)。
public String BMIResult(double weight,double height) {
double bmi=((weight*703)/(height*height));
if (BMI<18.5) {
return "You are underweight.";
} else if (BMI<26) { // BMI>=18.5 not needed, or the first if would be entered.
return "Your weight is healthy.";
} else { // <-- you might omit this else entirely, and end the method
return "You are overweight."; // <-- with this
}
}
答案 1 :(得分:1)
这是一个有效的版本:
public class BMI {
public String calculateBMI(double weight, double height) {
double bmi = ((weight * 703) / (height * height));
if (bmi < 18.5) {
return "You are underweight.";
}
if (bmi < 26) {
return "Your weight is healthy.";
}
return "You are overweight.";
}
public static void main(String[] args) {
System.out.println(new BMI().calculateBMI(95, 64));
}
}
原始代码的问题是变量bmi
的名称,如果没有执行任何ifs,则缺少return语句。事实上,这种情况(几乎)不可能发生,但编译器并不聪明,不知道。
此外,您无需执行许多检查,因为如果先前的if
语句失败,它们在逻辑上必须自动为真。同样地,不需要最后一个if
,因为如果执行到了这一点,那么这个人显然是超重的。
在Java中有命名约定,例如方法总是以小写字符开头。我已将您的BMIResult()
方法重命名为calculateBMI()
。虽然,很多人会鼓励你写calculateBmi()
,因为它更符合现代风格。
答案 2 :(得分:1)
问题是,如果两个条件都不满足,则不会返回任何条件。
使用:
public String BMIResult(double weight,double height) {
double bmi=((weight*703)/(height*height));
if (BMI<18.5)
return "You are underweight.";
if (BMI>18.5 && BMI<26)
return "Your weight is healthy.";
if (BMI>=26)
return "You are overweight.";
return ""; //add something.
}
答案 3 :(得分:0)
编译器不知道您的代码将执行您的一个if语句的代码。你必须在所有if的结尾处有一个返回,或者只是在结尾处写一个else。