返回无穷大作为BMI的Java GUI BMI计算器
我浏览了其他一些被问到的问题,但没有看到任何与我的确切问题有关的东西。问题是,我有一个JavaGUI BMI计算器,所有的东西都可以工作,除了我得到无限的BMI。奇怪的是,当我将输出语句包含到BMI中时,它在控制台上显示得很好。控制台和GUI计算器使用相同的hp.getBMI(),那么为什么一个会得到正确的输出,而另一个会显示无穷大呢。如果我的代码太草率,请原谅,这是我的第一个Java程序,我还没有完成编辑。提前谢谢返回无穷大作为BMI的Java GUI BMI计算器,java,Java,我浏览了其他一些被问到的问题,但没有看到任何与我的确切问题有关的东西。问题是,我有一个JavaGUI BMI计算器,所有的东西都可以工作,除了我得到无限的BMI。奇怪的是,当我将输出语句包含到BMI中时,它在控制台上显示得很好。控制台和GUI计算器使用相同的hp.getBMI(),那么为什么一个会得到正确的输出,而另一个会显示无穷大呢。如果我的代码太草率,请原谅,这是我的第一个Java程序,我还没有完成编辑。提前谢谢 public class HealthProfile { priva
public class HealthProfile
{
private int age;
private double height, heightFt, heightIn, weight, BMI, maxHR;
private String name, category;
//parameterized constructor
public HealthProfile(String name, int age, double heightFt, double heightIn, double weight)
{
this.name = name;
this.age = age;
this.heightFt = heightFt;
this.heightIn = heightIn;
this.weight = weight;
}
//default constructor
public HealthProfile()
{
this("",0,0,0,0);
}
public double getHeight()
{
height = heightIn + heightFt * 12;
return height;
}
public double getBMI()
{
BMI = weight * 703 / (height * height);
return BMI;
}
public double getMaxHR()
{
maxHR = 220 - age;
return maxHR;
}
public String getCategory()
{
if (BMI < 18.5)
category = "Underweight";
else if (BMI >= 18.5 && BMI <= 24.9)
category = "Normal";
else if (BMI >= 25 && BMI <= 29.9)
category = "Overweight";
else
category = "Obese";
return category;
}
}
主类,它只是运行GUI
public class HealthProfileMain {
public static void main(String[] args)
{
HealthProfile_GUI hp = new HealthProfile_GUI();
}
}
方法getBMI()
不计算高度:它仅由getHeight()
设置,在第一次调用getBMI()
之前不会调用它
也就是说,事件侦听器正确读取heightFt
和heightIn
值,但height
仍然为零。每次阅读heightFt
和heightIn
时,最好也更新heightIn
因此,对
getBMI()
的第一次调用产生一个被零除的除法(因此是无穷大,因为这在Java浮点中不是一个错误),而对getBMI()
的第二次调用获得了正确的高度值,因此得到了正确的结果。当您第一次调用getBMI()时,高度还没有被设置。但是在第二次调用之前,您调用了getHeight(),它为height设置了正确的值。默认构造函数将所有值都设置为0这一事实很奇怪。为什么要有默认构造函数?另外,在if语句中,如果(someVar==true)
ifsomeVar
是布尔值,则不需要执行if(someVar==true)
。只要做if(someVar)
这能回答你的问题吗?是的,就是这样。我假设只要HeightFt
和HeightIn
将值传递给Height
,就可以随时调用getBMI()
方法来检索BMI
。非常感谢。
public class HealthProfileMain {
public static void main(String[] args)
{
HealthProfile_GUI hp = new HealthProfile_GUI();
}
}