Java 来自每个分支的return语句

Java 来自每个分支的return语句,java,if-statement,return,Java,If Statement,Return,有时我发现一些编译错误如下- public static boolean returnTrueFalse(){ if(someConditions) return true; if(someConditions){ //do something return true; } if(someConditions){ //do something return false; } //GOT A COMPILA

有时我发现一些编译错误如下-

public static boolean returnTrueFalse(){

   if(someConditions) return true;

   if(someConditions){
      //do something
      return true;
   }

   if(someConditions){
      //do something
      return false;
   }

   //GOT A COMPILATION ERROR HERE


}
在上述情况下,我们在注释部分得到了一个编译错误,即-missing return语句。那么我们如何避免这种情况呢


谢谢

在任何if语句之外添加return语句,或者在其中一个if语句中添加else语句。您的函数是boolean类型,应该返回boolean类型,而不返回void类型。

编译错误的消息非常清楚:您的代码必须遇到每个可能执行路径的return语句,因为您的方法具有非void返回类型。只需为最后一种情况添加一个return语句,或者在正常执行中不应达到此状态时引发异常。

或者可以使用以下结构。借助布尔变量决策从单点使用return语句-


现在,由于多返回语句,这里没有分支。因此没有编译错误。

最好是最后一个,否则部分代码将失效……虽然这可能是个好主意,但值得注意的是,您的代码并不总是与OP示例中的代码相同,如果first someConditions为true,则返回true,而方法中的其余代码将不执行。如果i>2,则其可视性良好;如果i>1,则为真;ifi>0假;所以我们总是以false结束,因为所有这些条件都是i>0的子条件。@Pshemo,感谢这个伟大的发现。有一次我也遇到了OP提到的同样的情况,我用这个想法从这种情况中恢复过来。然后我没有想到这些案例,不知怎的我活了下来:。从现在起,我必须考虑你提到的情况。假设你的条件是IFX>10 IFX>5,IFX>0。对于x=-1应该发生什么?您是否确保您的方法将为您未处理的案例返回值?可能重复:从此处选择一个->
public static boolean returnTrueFalse(){

   boolean decision = false //or may be true based on your situation.

   if(someConditions) decision =  true;

   if(someConditions){
      //do something
      decision =  true;
   }

   if(someConditions){
      //do something
      decision =  false;
   }

   //returns at last; a single return
   //no branching
   return decision;


}