BodyMassIndex计算器错误(NaN)

时间:2016-04-26 20:24:14

标签: java nan

我编译时遇到NaN错误,我无法弄清楚我做错了什么?我试着移动变量,看看我是否可以让它们工作但没有。注意我输入的double类型的变量我用于bmi after inches = keyboard.nextInt();我认为这是一个零误差,但我不知道我除以零。

background-size: cover;

2 个答案:

答案 0 :(得分:1)

了解变量的动态特性非常重要,例如当您键入

double heightMeters = ((feet * 12) + inches) * .0254;

在执行任何键盘输入之前,使用当前值feetinches(当时为0)立即评估此分配。要使用键盘输入的值执行这些计算,需要执行这些计算,并在完成键盘输入后,当pounds的当前值完成时,将结果分配给相应的变量 。 ,feetinches是您刚刚输入的内容。因为heightMeters从初始化开始仍然为零,并且自那以后还没有改变,因此您将得到除以零。

答案 1 :(得分:0)

您正在获取异常,因为此处heightMeters的值为0:

double bmi = mass / (heightMeters * heightMeters);

计算heightMeters的唯一时间,结果为0:

double heightMeters = ((feet * 12) + inches) * .0254;

看起来您想要使用此计算,因此我将其拆分为单独的函数:

public static double getHeightInMeters(int feet, int inches)
{
    return 0.0254 * ((feet * 12) + inches);
}

然后你可以稍后再打电话:

double heightMeters = this.getHeightInMeters(feet, inches);
double bmi = mass / (heightMeters * heightMeters);