2016-11-04 37 views
2

我想了解为什么我的编译器抱怨说我错过了一个return语句,而事实上我有其他方法在我的方法结束时失效。为什么会这样? 什么时候该不会回报为什么我错过了一个return语句

这里有一个基本例如:

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 

} 
+1

你的代码编译得很好。编译时实际代码中存在拼写错误,或者错误位于其他行中,或者在您的环境中出现其他错误。 – ajb

+0

你不需要任何其他的东西,我知道它不能回答你的问题,但他们完全没有必要。 – TofuBeer

+0

@TofuBeer当然,你是对的,但作为一种风格问题,我认为让它们在那里会更好一些,这取决于整个代码。 – ajb

回答

1

我相信下面将解决你的问题:

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

和顺便说一下,在StackOverflow帮助中心有许多有趣的文章。我会推荐How to create a Minimal, Complete, and Verifiable exampleHow to ask

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

+0

你说得对,这似乎是一个IDE独占的问题,日食并没有给我一个错误,而bluej没有。 这个例子有点糟糕,是的,它可以简化为你所拥有的,但我最后专门查看了else {}语句,而不是代码的优雅程度。 –

+0

如果你的老师不强迫你使用BlueJ,不要。切换到Eclipse或IntellJ作为其中一个将会加快你的工作在未来。 – xenteros

+0

BlueJ是必需的,而且由于某种原因,eclipse在我的电脑上出问题(在bluej中不会出现奇怪的错误)。我无法设置IntelliJ,虽然似乎是三者中最好的 - 我无法从JetBrains找到任何关于如何让它运行的教程。 可能是因为我是菜鸟,我不明白它的70%的花式特征 –

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解决方案仍然更加优雅。