我编译时遇到NaN错误,我无法弄清楚我做错了什么?我试着移动变量,看看我是否可以让它们工作但没有。注意我输入的double类型的变量我用于bmi after inches = keyboard.nextInt();我认为这是一个零误差,但我不知道我除以零。
background-size: cover;
答案 0 :(得分:1)
了解变量的动态特性非常重要,例如当您键入
时 double heightMeters = ((feet * 12) + inches) * .0254;
在执行任何键盘输入之前,使用当前值feet
和inches
(当时为0
)立即评估此分配。要使用键盘输入的值执行这些计算,需要执行这些计算,并在完成键盘输入后,当pounds
的当前值完成时,将结果分配给相应的变量 。 ,feet
和inches
是您刚刚输入的内容。因为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);