2013-08-27 186 views
3

我是Java新手,仍在努力學習解決方法。今天,我的老師給出了一個任務,我們在Java中製作BMI計算器。其中一個步驟是讓它顯示BMI類別。所以用戶可以查看它並查看它們的位置。我完成了其他一切,但遇到了一個問題。Java中的BMI計算器

下面是腳本:

import java.util.Scanner; 

public class BMI { 
    public static void main(String[] args){ 

     Scanner input = new Scanner(System.in); 

     double weight = 0.0; 
     double height = 0.0; 
     double bmi = 0.0; 

     System.out.print("Enter your weight in pounds: "); 
     weight = input.nextInt(); 

     System.out.print("Enter your height: "); 
     height = input.nextInt(); 

     bmi = ((weight * 703)/(height * height)); 

     System.out.printf("Your BMI is", bmi); 

     System.out.println("BMI VALUES"); 
     System.out.println("Underweight: Under 18.5"); 
     System.out.println("Normal: 18.5-24.9 "); 
     System.out.println("Overweight: 25-29.9"); 
     System.out.println("Obese: 30 or over"); 
    } 
    } 

下面是結果:

Your BMI isBMI VALUES 
Underweight: Under 18.5 
Normal: 18.5-24.9 
Overweight: 25-29.9 
Obese: 30 or over 

什麼我做錯了,我該如何解決這個問題?

回答

8

試試這個:

System.out.printf("Your BMI is %f\n", bmi); 

您還可以打印這樣的:

System.out.println("Your BMI is " + bmi); 
+0

感謝您的合作:) – ChrisD93

+0

不客氣:) – 2013-08-27 21:50:59

+0

@ThatOneDude幫助 - 如果它解決您的問題,您應該點擊勾選的答案。 – JoshDM

13

你忘了bmi佔位符(和線路終端):

System.out.printf("Your BMI is %f\n", bmi); 

這裏的formatting syntax guide供您參考。

+1

(btw,'bmi'似乎是一個'double',而不是'int'。) –

+0

@ DennisMeng你說得對,改成'%f'。 – rgettman

5

當您使用printf,以下也可以工作:

System.out.println("Your BMI is " + bmi); 
1

在理想情況下應打印浮筒/加倍通常BMI值被測量最多2小數位

System.out.format("Your BMI is %.2f%n",bmi); 
0

可讀格式這可能是更多的代碼,但你可以使用JOptionPane

input = JOptionPane.showInputDialog("What is you weight in pounds?"); 
     weight = Double.parseDouble(input); 

     input = JOptionPane.showInputDialog("What is your hight is inches?"); 
     height = Double.parseDouble(input); 
0

m在變量類型聲明(double)和用戶輸入類型的聲明(nextInt)之間使用ismatch 如果要將變量類型維護爲double,我將使用nextDouble作爲輸入類型。

-2

答:我不確定bmi = ((weight * 703)/(height * height));是否正確。

我碰到這可能適用於 BMI = ((weight/(height * height))* 10000;

B您一個公式來:System.out.printf(「Your BMI is」, bmi);不需要 System.out.prinln(「 Your BMI is 「 + BMI);

我希望它爲你工作 好運繼續下去

0

你可以使用這樣的數組:

public static void main(String[] args) { 
    double[] ht = new double[5]; 
    double[] wt = new double[5]; 
    double[] bmi = new double[5]; 
    String[] sht = new String[5]; 
    String[] swt = new String[5]; 

    for (int i = 0; i < ht.length; i++) { 
     sht[i] = JOptionPane.showInputDialog("Enter Hight"); 
     swt[i] = JOptionPane.showInputDialog("Enter Weight"); 
     ht[i]=Double.parseDouble(sht[i]); 
     wt[i]=Double.parseDouble(swt[i]); 
     bmi[i]=wt[i]/(ht[i]*ht[i]); 
     System.out.println("BMI IS "+bmi[i]+"Kg/m2"); 
     JOptionPane.showMessageDialog(null,"BMI IS "+bmi[i] +"Kg/m2"); 
     if(bmi[i]>25){ 
      JOptionPane.showMessageDialog(null,"YOU ARE AT RISK"); 
      System.out.println("YOU ARE AT RISK"); 
     }else { 
      JOptionPane.showMessageDialog(null,"YOU ARE Healthy"); 
      System.out.println("YOU ARE Healthy "); 
    } 

    } 
} 
0

https://github.com/arghadasofficial/BMI/blob/master/src/argha/bmi/Bmi.java

public class Bmi { 

    //Variables 
    private double result; //Stores the result 
    private String bmi; //Stores the Bmi result in String 
    private String status; //Stores the status (Normal......) 
    private static DecimalFormat decimalFormat = new DecimalFormat(".#"); //Formating the result 

    /** 
    * Get the BMI from calculation and returns the result in String format 
    * 
    * @return BMI 
    */ 
    public String getBmi() { 
     /** 
     * Following code example : bmi = decimalFormat.format(result); 
     * 
     * if bmi is 23.12345 then remove 2345 and return 23.1 using DecimalFormat class provided by Java 
     * 
     */ 
     bmi = decimalFormat.format(result); 
     return bmi; 
    } 

    /** 
    * Get the status according to the BMI result and returns the Status in 
    * String format 
    * 
    * @return Status 
    */ 
    public String getStatus() { 
     return status; 
    } 

    /** 
    * Get weight and height in double format and do the calculation for you 
    * 
    * @param weight - accepts weight in kilograms 
    * @param height - accept height in centimeters 
    */ 
    public void calculateBmi(double weight, double height) { 
     /** 
     * First get weight and height then convert height to meters then 
     * multiply the height itself to height and then divide the height with 
     * weight then set the actual value to result variable 
     */ 

     //Convert the height from cm to m 
     double meters = height/100; 

     //Multiply height by height 
     double multiply = meters * meters; 

     //divide the height with weight in kg 
     double division = weight/multiply; 

     //set the value to result variable 
     result = division; 

     //call checkStatus method for checking Status 
     checkStatus(); 
    } 

    /** 
    * Private method for checking bmi and returns the status It remains private 
    * because we don't need to access this from somewhere else. 
    */ 
    private void checkStatus() { 
     /** 
     * Check : 
     * 
     * if BMI is less than 18.5 then set status to Underweight if BMI is 
     * greater than 18.5 and less than 25 then set status to Normal if BMI 
     * is greater than 25 and less than 30 then set status to Overweight if 
     * BMI equals to 30 or greater than 30 then set status to Obese 
     */ 
     if (result < 18.5) { 
      status = "Underweight"; 
     } else if (result > 18.5 && result < 25) { 
      status = "Normal"; 
     } else if (result > 25 && result < 30) { 
      status = "Overweight"; 
     } else if (result == 30 || result > 30) { 
      status = "Obese"; 
     } 
    } 
} 
+0

感謝您的回答。考慮通過解釋此代碼如何解決問題來擴展您的答案。 –

+0

Bmi bmi = new Bmi(); \t bmi.calculateBmi(65,162); \t System.out.println(bmi.getBmi()); \t System.out.println(bmi.getStatus()); –

+0

非常好,考慮編輯你的文章並添加解釋。 –