2017-03-25 111 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