Java中的BMI计算器

时间:2013-08-27 21:42:46

标签: java

我是Java的新手,仍然在努力学习我的方法。今天,我的老师做了一个任务,我们用Java制作BMI计算器。其中一个步骤是让它显示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

我做错了什么以及如何解决这个问题?

9 个答案:

答案 0 :(得分:13)

您忘记了bmi(以及行终结符)的占位符:

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

以下是formatting syntax guide供您参考。

答案 1 :(得分:9)

试试这个:

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

你也可以这样打印:

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

答案 2 :(得分:5)

在使用printf时,以下内容也适用:

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

答案 3 :(得分:1)

理想情况下,您应该以可读格式打印浮点/双打通常BMI值最多可测量2位小数

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

答案 4 :(得分:1)

你可以使用这样的数组:

 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 ");
    }

    }
}

答案 5 :(得分: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);

答案 6 :(得分:0)

变量类型声明(double)与用户输入类型声明(nextInt)不匹配 如果你想将变量类型保持为double,我会使用nextDouble作为输入类型。

答案 7 :(得分: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";
        }
    }
}

答案 8 :(得分:-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);

我希望它适合你 祝你好运吧