好的,所以我写了这个简单的代码来计算BMI,并根据输入的值提供结果(即:BMI +正常/肥胖等).我随机开始测试它,发现它适用于我在EXCEPT中输入的所有值,重量= 73,高度= 1.71 ......
package basics;
import java.util.*;
public class BMI {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
double W, H, BMI;
System.out.print("Enter weight in kg");
W = sc.nextDouble();
System.out.print("Enter height in m: ");
H = sc.nextDouble();
BMI = W/(H*H);
System.out.println("Your BMI is : " + (int) BMI);
if (BMI < 18.5)
System.out.println("Underweight");
if (BMI >= 18.5 && BMI <= 24.9)
System.out.println("Normal");
if (BMI >=25 && BMI <= 29.9)
System.out.println("Overweight");
else
if (BMI >= 30)
System.out.println("Obese");
}
}
Run Code Online (Sandbox Code Playgroud)
我想这可能是因为为这些值计算的BMI是24.9,这是一个临界值.有人可以帮我解决这个问题吗?提前致谢.
如果BMI是24.95,你的代码会显示什么?这不正常,因为它不小于或等于24.9,并且不超重,因为它不大于或等于25.
像这样重写if语句:
if (BMI < 18.5)
System.out.println("Underweight");
if (BMI >= 18.5 && BMI < 25)
System.out.println("Normal");
if (BMI >=25 && BMI <= 30)
System.out.println("Overweight");
else
if (BMI > 30)
System.out.println("Obese");
Run Code Online (Sandbox Code Playgroud)
甚至是
if(BMI < 18.5) System.out.println("Underweight");
else if (BMI < 25) System.out.println("Normal");
else if (BMI < 30) System.out.println("Overweight");
else System.out.println("Obese");
Run Code Online (Sandbox Code Playgroud)
我更喜欢后者,因为它最大限度地减少了多余比较的数量,使用if ... else if ... else if ... else结构.