基本Java:方法计算返回NaN

基本Java:方法计算返回NaN,java,methods,Java,Methods,我正在学习java,但在创建计算体重指数的方法时遇到了困难。它不接受我之前在程序中声明的实例变量,我不知道如何修复它。感谢您的帮助 代码: 结果: BMI=NaN如下更新您的构造函数: public HealthRecord(String LastName, String FirstName, double height, double weight) { first = FirstName; last = LastName; this.height = height

我正在学习java,但在创建计算体重指数的方法时遇到了困难。它不接受我之前在程序中声明的实例变量,我不知道如何修复它。感谢您的帮助

代码:

结果:
BMI=NaN

如下更新您的构造函数:

public HealthRecord(String LastName, String FirstName, double height, double weight)
  {
    first = FirstName;
    last = LastName;
    this.height = height;
    this.weight = weight;

  }

HealthRecord
构造函数中,
height
weight
的值分配给方法参数,而不是对象/实例变量

如果要为实例变量赋值,需要使用始终引用当前对象(look)的
运算符,并引用以下代码:

public HealthRecord(String first, String last, 
              double height, double weight) {
        this.first = first;
        this.last = last;
        this.height = height;
        this.weight = weight;
}
此外,我还将参数名称更新为
first
last
(方法参数),以便它们都保持一致,如上图所示


我建议您始终对方法参数和实例变量使用相同的变量名(作为实践)&使用
this.
引用实例变量。

应该是
this.height=height
此。重量=重量谢谢你的工作!我不知道为什么?因为您有一个与构造函数参数同名的字段,所以必须使用
this
来指示该字段。执行
weight=weight
只是将参数重新分配给它自己,而该字段没有分配。@LukasBarth您没有初始化
this.width
this.height
,因此它们没有有效的值来进行计算。您只是将构造函数参数重新分配给它自己,这没有任何作用。请注意:当您创建新的“HealthRecord”时,我会传入“double”类型而不是“integer”类型。明确遵循声明是一种很好的做法,它可以生成更易于阅读的代码。ie:HealthRecord记录=新的HealthRecord(“上次”、“第一次”、72.0、150.0);
public HealthRecord(String first, String last, 
              double height, double weight) {
        this.first = first;
        this.last = last;
        this.height = height;
        this.weight = weight;
}