为了账号安全,请及时绑定邮箱和手机立即绑定

两种结果的返回语句都缺少返回语句错误

两种结果的返回语句都缺少返回语句错误

慕莱坞森 2022-01-12 16:53:03
 public double getWeight(boolean isMetric) {    // your code here    if(isMetric = true) {    return kg;    } else if(isMetric = false)         return lb;      }我知道对于每个可能的结果我都需要一个 return 语句,但是因为这是一个布尔参数,这是否意味着我只需要两个 return 语句?我尝试在最后一行添加“return null”,但这只会导致“非法类型开始”错误。   public User(String firstName, String lastName, double weight, double height) {      first = firstName;    last = lastName;    kg = weight;    cm = height;    }    public User(String firstName, String lastName, double weight, double height, boolean isMetric) {    // your code here    first = firstName;    last = lastName;    lb = weight;    in = height;    isMetric = false;}这些是与所讨论的方法相关的构造函数。
查看完整描述

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;  

    }    

 }


查看完整回答
反对 回复 2022-01-12
?
慕沐林林

TA贡献2016条经验 获得超9个赞

这里:

if(isMetric = true) {

这是一个分配,而不是一个条件(= 与 ==)。

因此,您的“检查”归结为:

if (true) { ... return

因此,关闭 } 之后的任何内容都是死代码。

换句话说:编译器认识到您的代码将允许返回 kg,因此永远不会执行 else-if,因此编译器会告诉您似乎有问题。


查看完整回答
反对 回复 2022-01-12
?
开心每一天1111

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没有回报。


查看完整回答
反对 回复 2022-01-12
  • 3 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信