【问题标题】:Why am I missing a return statement with else [closed]为什么我缺少带有 else 的 return 语句 [关闭]
【发布时间】:2017-03-17 21:34:17
【问题描述】:

我试图理解为什么我的编译器抱怨我缺少一个 return 语句,而事实上我在我的方法结束时有故障安全 else。为什么会这样? else 什么时候不包括退货

这是一个原始示例:

public boolean greaterOrEqual(int a){
    int z = 10;
    if(z > a){
       return false;
    }
    else if(z < a){
       return true;
    }
    else{
       return true; //if if and else if fail, else is the last resort
    }
}

功能上和这个是一样的

public boolean greaterOrEqual(int a){
    int z = 10;
    if(z > a){
       return false;
    }
    else if(z < a){
       return true;
    }

return true; //if if and else if fail, returns true

}

【问题讨论】:

  • 你的代码编译得很好。编译时实际代码中存在拼写错误,或者错误在其他行,或者您的环境中出现其他问题。
  • 你不需要任何其他的,我知道它不能回答你的问题,但它们完全没有必要。
  • @TofuBeer 你是对的,当然,但就风格而言,我认为将它们放在那里会更好一些,具体取决于整个代码。
  • 从风格的角度来看,我更喜欢每个方法一次返回,除了在方法开始时通过参数检查提前返回,通常通过 throws 完成。

标签: java if-statement methods return


【解决方案1】:

如果你声明一个结果变量,你可以避免if else 块内的return 语句。

这个方法的逻辑结构和你的差不多,估计 bluej 不会抱怨的。

public boolean greaterOrEqual(int a)
{
    int z = 10;
    boolean result;
    if (a >= z)
    {
        result = true;
    }
    else
    {
        result = false;
    }
    return result;
}

虽然 xenteros 解决方案仍然要优雅得多。

【讨论】:

    【解决方案2】:

    我相信以下方法可以解决您的问题:

    public boolean greaterOrEqual(int a){
        int z = 10;
        return z <= a;
    }
    

    顺便说一句,* 帮助中心上有很多有趣的文章。我会推荐How to create a Minimal, Complete, and Verifiable exampleHow to ask

    您描述的问题无法重现。我们每个人都可以编译它。

    【讨论】:

    • 你说得对,这似乎是 IDE 独有的问题,eclipse 没有给我一个错误,而 bluej 有。这个例子有点糟糕,是的,它可以简化为你所拥有的,但我特别关注最后的 else{} 语句,而不是代码的优雅程度。
    • 如果您的老师不强迫您使用 BlueJ,请不要。切换到 Eclipse 或 IntellJ,因为习惯其中之一将加快您未来的工作。
    • BlueJ 是必需的,并且由于某种原因 eclipse 在我的计算机上存在错误(bluej 中不会出现奇怪的错误)。我无法设置 IntelliJ,尽管它似乎是三者中最好的——我在 JetBrains 上找不到任何关于如何让它运行的教程。可能是因为我是菜鸟,70%的花哨功能我都不懂
    最近更新 更多