2017-03-25 84 views
0

的“你是正常体重”和“你是超重”将不显示不工作。 我的代码:如果其他如预期

import java.util.Scanner; 
    public class BodyMassIndex 
    { 
     public static void main(String[] args) 
     { 
      Scanner scan = new Scanner(System.in); 
      double bmi, weight, height; 

      System.out.println("----LETS CHECK YOUR BMI----"); 
      System.out.print("Enter your weight (kg): "); 
      weight = scan.nextDouble(); 
      System.out.print("Enter your height (m): "); 
      height = scan.nextDouble(); 
      System.out.println("-----------RESULTS----------"); 
      bmi = weight/(height*height); 
      System.out.printf("%-10s%-4.2f" , "\t\t Your BMI is " , bmi); 
      if(bmi<18.5) 
      {System.out.println("\n\t\t You are UNDERWIGHT");} 
      else if(bmi==18.5 && bmi <= 24.9) 
      {System.out.println(" You are NORMAL WEIGHT");} 
      else if(bmi==25 && bmi <= 29.9) 
      {System.out.println(" You are OVERWEIGHT");} 
      else if(bmi > 30) 
      {System.out.println("\n\t\t You are OBESE");} 
     else 
      {} 
     } 
     } 
+0

变化BMI == 18.5至BMI> = 18.5和BMI == 25至BMI> = 25 – Satya

+1

只需卸下较低的值(无论之前是' &&'),因为它们在前面的if语句中被处理了。 – AntonH

回答

-1

您的if语句是错误的。用这种方法修正:

else if(bmi >= 18.5 && bmi <= 24.9) 
     {System.out.println(" You are NORMAL WEIGHT");} 
else if(bmi >= 25 && bmi <= 29.9) 
     {System.out.println(" You are OVERWEIGHT");} 
2

Yossef是正确的改变。不过,我认为重要的是你明白你的逻辑在做什么,为什么它不起作用。

因此,让我们继续前进,看看这第一个else if语句为相同的解释涵盖了错误。

否则,如果(BMI == 18.5 & & BMI < = 24.9)

所以在这里,你要找的地方BMI在18.5和24.9之间的情况。随着条件语句的& &,你既需要声明是真实的,以便它传递的是检查(每说),并触发打印语句。

那么让我们来看看两种情况:

1)BMI = 18.5

First, fact check: is bmi between 18.5 and 24.9? Yes. 

Now, your code's logic: 

     bmi == 18.5? True 
     bmi <= 24.9? True 

无论是在这种情况下通过。但是,这将工作之间的任何数字。 18.5和24.9?让我们做更多的情况

2)BMI = 20.0

First, fact check: is bmi between 18.5 and 24.9? Yes. 

Now, your code's logic: 

     bmi == 18.5? False 
     bmi <= 24.9? True 

在这种情况下,它失败,因为BMI是不是18.5。因此,对于任何BMI不是18.5,但为18.5和24.9之间,该检查将失败。

。希望澄清为什么!

编辑:

AntonH由我未能留下了一个伟大的点。

你也可以解释为什么bmi <= 24.9是坏的,bmi < 25更好(因为整个事情归结如果BMI = = 24.95)。

所以当他说,使用BMI < 25允许您的应用程序正确评价更精确的BMI值(即多个小数点)如AntonH使用其中BMI是24.95的情况。

+2

你也可以解释为什么'BMI <= 24.9'是坏的,和'BMI <25'更好(因为整个事情归结如果BMI = = 24.95)。 – AntonH

0

更改if语句 - 逻辑括号

bmi==18.5 to bmi >=18.5 and bmi==25 to bmi >=25