我正在创建一个 BMI 计算器,但运行该程序时遇到问题,因为我的结果是:
空重为 0.0,测量高度为 0.0。您的体重指数是
何时应注明姓名、体重、BMI 以及是否体重不足、健康、超重或肥胖。
代码如下:
public class Person {
private String firstName;
private double heightInches;
private double weightPounds;
public Person (String userFirstName, double userHeightInches, double userWeightPounds)
{
this.firstName = firstName;
this.heightInches = heightInches;
this.weightPounds = weightPounds;
}
public String getFirstName()
{
return this.firstName;
}
public double getHeightInches()
{
return this.heightInches;
}
public double getWeightPounds()
{
return this.weightPounds;
}
public void setFirstName (String firstName)
{
this.firstName = firstName;
}
public void setHeightInches(double userHeightInches)
{
this.heightInches = userHeightInches;
}
public void setWeightPounds(double userWeightPounds)
{
this.weightPounds = userWeightPounds;
}
@Override
public String toString()
{
return this.firstName + "weighs " + this.weightPounds + " and measures "
+ this.heightInches + " tall. Your BMI is ";
}
public double calculateBMI(double userHeightInches, double userWeightPounds )
{
double BMI = ((userWeightPounds / userHeightInches) * (userHeightInches)) * 703;
return BMI;
}
还有......
public class BodyMassIndex {
public static Person anyPerson;
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
createPersonObject();
displayBMI();
}
public static void createPersonObject()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("What is your first name?");
String firstName = keyboard.next();
System.out.println ("How tall are you (in inches)?");
Double heightInches = keyboard.nextDouble();
System.out.println("How much do you weigh (in pounds)?");
Double weightPounds = keyboard.nextDouble();
anyPerson = new Person(firstName, heightInches, weightPounds);
}
public static void displayBMI()
{
double userWeightPounds = 0;
double userHeightInches = 0;
double BMI = anyPerson.calculateBMI(userWeightPounds, userHeightInches);
System.out.println(anyPerson.toString());
if (BMI < 18.5)
{
System.out.println("Underweight");
}
else if (BMI >= 18.5 && BMI < 24.9) {
System.out.println("Healthy");
}
else if (BMI >= 25 && BMI < 29.9) {
System.out.println("Overweight");
}
else if (BMI >= 30) {
System.out.println("Obese");
}
}
最佳答案
您正在将字段变量设置为其自身,这些变量未实例化,因此值为 null 或 0.0。您需要将它们设置为您的类的参数:this.firstName = userFirstName。
由于您自动使用 0.0 和 0.0 值,因此您的 BMI 计算也已关闭。您应该使用 Person
类中的 getter 方法来进行计算。
关于java - 体重指数计算器 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44253099/