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没有回报。
添加回答
举报