请耐心等待,我是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
答案 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。