2013-08-03 62 views
0

为什么没有这种结构可以接受吗?无论如何,它返回一个布尔值对吗?Java的嵌套相关查询

public boolean a() 
{ 

    if(condition) 
    { 
     if(condition) 
     { 
      if(condition) 
      { 
       return true; 
      } 
     } 
    } 

} 
+0

如果所有要退回的控制研究流动导致的值是可以接受的 –

+1

@迪克森:你应该明白,如果,如果条件不满足,它不会返回任何东西之一。 – namalfernandolk

回答

4

这是无效的,因为有可能没有任何返回。你的方法被声明为返回一个布尔值,所以它必须在方法结束之前在代码的某个点返回一个布尔值,而不管内部逻辑如何。如果您的if语句if (condition)为false,则该方法没有其他return语句,因此代码甚至不会编译。因为你需要做一回一些默认值(return

public boolean a() 
{ 
    if(condition) 
    { 
     if(condition) 
     { 
      if(condition) 
      { 
       return true; 
      } 
     } 
    } 
    return false; 
} 
3

无效:要解决这个问题,添加一个“默认”的返回值。

什么if条件不满足?

有效的是:

public boolean a() 
    { 

     if(condition) 
     { 
      if(condition) 
      { 
       if(condition) 
       { 
        return true; 
       } 
      } 
     } 
    return false; 

    } 

作为一个侧面说明,为了使你的代码模式可读的,我建议

if(condition && condition && condition) 
     { 
     return true; 
     } 
    return false; 

喜欢阅读jls-14.17

0

虽然该方法返回true当满足条件,当条件不是 satisf它没有指定一个返回值IED。该方法应该覆盖所有代码路径(读取条件语句)。

0

正如上述回答正确的状态,你绝对在Java中返回的东西。 C并不在乎。

为了避免这种情况,我会建议减少筑巢做这样的事情

boolean value=false; //default return 
if(cond && cond) 
    return value; 
if(cond) 
    return false; //if you want to be more specific 
if(cond) 
    value=true; 

return value; 

这样的值被返回无论是什么水平。从有利的一面,可读性增加