3 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
bmi
中找不到toString()
。嘗試這個(gè),
public String toString(){ return name + " is " + height + "m tall and is " + weight + "Kg and has a BMI of " + getBMI() + "Kg/m^2"; }

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
您在方法中聲明的變量只能在同一方法中使用,不能在該方法之外的任何地方使用,這個(gè)概念稱為scope. {要以最簡(jiǎn)單的方式理解這一點(diǎn),請(qǐng)嘗試在您聲明變量的地方找到最近的“開括號(hào)” 。并且您可以在括號(hào)關(guān)閉之前的任何地方使用該變量。
在您的情況下,您已經(jīng)在方法內(nèi)部聲明了bmi變量getBMI(),因此您可以在同一方法中的任何地方使用該變量,但在它之外的任何地方都不能使用該變量,并且您嘗試在toString()無法訪問它的方法中使用它,因此您得到了錯(cuò)誤
cannot resolve symbol bmi
要解決此問題,您可以使用以下兩種方法中的任何一種
1] 調(diào)用中的getBMI()方法toString() 我會(huì)推薦這種方法,因?yàn)間etBMI()它返回雙精度,所以讓我們利用它并在需要使用的值的任何地方直接調(diào)用它bmi。
@Override
public String toString(){
return name + " is " + height + "m tall and is " + weight + "Kg and has a BMI of " + getBMI() + "Kg/m^2";
}
更新
根據(jù)保羅的建議
2] 在這個(gè)場(chǎng)景中不推薦,但是你可以在很多其他場(chǎng)景中使用它,bmi在BMI類中定義全局變量,稍后當(dāng)你在構(gòu)造函數(shù)中為它賦值時(shí),你可以在同一個(gè)類中的任何地方使用該變量,你可以在構(gòu)造函數(shù)本身中應(yīng)用公式。在這種情況下,您的代碼將如下所示
public class BMI {
private double height;
private double weight;
private String name;
private double bmi;
public BMI(String name, double height, double weight) {
this.name = name;
this.height = height;
this.weight = weight;
this.bmi = weight / (height * height);
}
@Override
public String toString() {
return name + " is " + height + "m tall and is " + weight + "Kg and has a BMI of " + bmi + "Kg/m^2";
}
}

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
另一種方法是
public class BMI {
private double height;
private double weight;
private String name;
private double bmi;
public BMI(String name, double height, double weight){
this.name = name;
this.height = height;
this.weight = weight;
this.bmi = weight/(height*height);
}
public double getBMI(){
return bmi;
}
@Override
public String toString(){
return name + " is " + height + "m tall and is " + weight + "Kg and has a BMI of " + bmi + "Kg/m^2";
}
}
添加回答
舉報(bào)