2017-04-06 83 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.來引用實例變量。