使用指标计算Java中的BMI

时间:2016-10-09 02:17:24

标签: java

请耐心等待,我是Java课程第2周的互动设计专业学生。

我需要使用以下公式创建BMI计算器:使用以下公式计算BMI:

           w
 BMI =    ___
       (h/100) 2

其中w是以千克为单位的重量,h是以厘米为单位的高度。请注意,分母是平方的。

这是我的代码:

    /**
 * Calculates the Body Mass Index (BMI) for the user. The user must type in his
 * or her height in centimeters and weight in kilograms, and the computer prints
 * out the user's BMI.
 */
import java.util.Scanner; // import class
public class BMI {
    public static void main(String[] args) {
        int weight;
        int height;
        double bmi;
        Scanner console; //  create a variable to represent the console
        console = new Scanner (System.in); //  create the object with new
        System.out.print("How much do you weigh (in kg)? "); // user prompt to provide weight
        weight = console.nextInt(); // read from console
        System.out.print("How tall are you (in cm)? "); // user prompt to provide height
        height = console.nextInt(); // read value from console
        bmi = (double) weight / (height/100*height/100); // calculates BMI
        System.out.println("Your BMI is " + bmi); // displays user's BMI
    }
}

该程序如果可以调用它,运行但我认为计算错误。

我已经通过多种方式格式化了计算: bmi =(双倍)重量/(高度/ 100 *高度/ 100);当我使用100表示​​重量而200表示高度时,返回重量除外。我尝试过以下方法:

bmi =(双倍)重量/身高/ 100 *身高/ 100;

bmi =(双倍)重量/(身高/ 100 *身高/ 100);

bmi =(双倍)重量/(身高/ 100)*(身高/ 100);

bmi =(双倍)重量/((身高/ 100)*(身高/ 100));

bmi =(double)(体重/身高/ 100 *身高/ 100);

bmi =(double)(重量/(身高/ 100 *身高/ 100);

bmi =(double)(体重/(身高/ 100)*(身高/ 100);

bmi =(双倍)(重量)/((身高/ 100)*(身高/ 100));

bmi =(双倍)(重量)/((身高/ 100)*(身高/ 100));

bmi =(双倍)(重量)/身高/ 100 *身高/ 100;

我要么100%得到重量,要么只用100和200作为变量。我尝试了75和150,这也返回了重量。

此时我甚至不记得PEMDAS

2 个答案:

答案 0 :(得分:1)

当你将int height除以100时,它会截断小数,因为它仍然是一个int。

尝试将变量初始化为双精度数:

double weight;
double height;

然后在从输入中获取int时抛出它们:

weight = (double) console.nextInt();
height = (double) console.nextInt();

这样你仍然会为输入取一个int,但是当你进行计算时它就像一个双精度。

答案 1 :(得分:1)

使用简化的公式获得所需的结果。试试这个: bmc=(weight * 10000.0 ) /(height*height); 不需要任何强制转换,就好像表达式中有任何双精度数(10000.0)一样,它会自动将结果返回到double。