BMI计算器错误?!Java的

Han*_*kes 2 java math

好的,所以我写了这个简单的代码来计算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,这是一个临界值.有人可以帮我解决这个问题吗?提前致谢.

ζ--*_*ζ-- 6

如果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结构.