2017-04-06 765 views
0

我正在学习java,但在创建计算身体质量指数的方法时遇到困难。它不接受我在程序中早些时候声明的实例变量,我不知道如何解决这个问题。所有帮助表示赞赏!基本Java:方法计算返回NaN

代码:

import java.util.Formatter; 
public class HealthRecord 
{ 
    // initialise instance variables 

    String first; 
    String last; 
    double height; 
    double weight; 

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

    } 


    public static void main(String args[]) { 

     HealthRecord record = new HealthRecord("Last", "First", 72, 150); 
     System.out.println("BMI="+record.getBMI()); 
    } 

     // calculate BMI 
    public double getBMI() { 
     double bmi = weight/(height * height) * 703.0; 
     return bmi; 
    } 

} 

结果: BMI = NaN的

+7

应该是'this.height = height;'和'this.weight = weight;' – Li357

+0

谢谢!我不确定为什么? –

+0

由于您的字段与构造函数参数名称相同,因此您必须使用'this'来指示该字段。做'weight = weight'只是将参数重新分配给自己,并且字段没有被分配。 – Li357

回答

0

更新你的构造函数如下:

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

    } 
0

在你HealthRecord构造,你的height分配值和weight到方法参数,而不是对象/ in立场变量

如果你想要的值赋给实例变量,你需要使用this运算符,它总是指当前对象(看here),并参考下面的代码:

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

另外,我有更新的参数名称为firstlast(方法参数),以便它们全都如上所示一致。

我建议你总是对方法参数和实例变量使用相同的变量名(使其成为练习)&使用this.来引用实例变量。