3 回答

TA貢獻1864條經驗 獲得超6個贊
首先使用 == 而不是 = 內部條件:
if(isMetric == true) {
}
現在,由于 if / else if 條件評估為布爾值,您可以將代碼簡化為:
if(isMetric) {
...
}
此外,實際上所有方法分支都應該返回一個值(并且 java 沒有“優化”來檢查是否else if包含布爾表達式的條件。
相反,您可以使用以下語義等效的構造:
public double getWeight(boolean isMetric) {
// your code here
if(isMetric) {
return kg;
} else {
return lb;
}
}

TA貢獻2016條經驗 獲得超9個贊
這里:
if(isMetric = true) {
這是一個分配,而不是一個條件(= 與 ==)。
因此,您的“檢查”歸結為:
if (true) { ... return
因此,關閉 } 之后的任何內容都是死代碼。
換句話說:編譯器認識到您的代碼將允許返回 kg,因此永遠不會執行 else-if,因此編譯器會告訴您似乎有問題。

TA貢獻1836條經驗 獲得超13個贊
我會簡化你必須是以下內容:
public double getWeight(boolean isMetric) {
if (isMetric) {
return kg;
}
return lb;
}
您的 getWeight 方法存在幾個主要問題。if(isMetric = true)將 isMetric 分配給 true 而不是將其與 true 進行比較(=用于分配,==用于檢查相等性)。它抱怨缺少回報,因為您的最后一條語句處于不必要的條件(else if(isMetric = false))中,其中隱含else沒有回報。
添加回答
舉報