Java嵌套用于相关查询

时间:2013-08-03 08:15:07

标签: java

为什么这种结构不可接受?无论如何它返回一个布尔值对吗??

public boolean a()
{

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

} 

4 个答案:

答案 0 :(得分:4)

它无效,因为可能无法返回任何内容。您的方法被声明为返回一个布尔值,因此它必须在方法完成之前在代码中的某个点返回一个布尔值,而不管内部逻辑如何。如果if语句if (condition)为false,则该方法没有其他return语句,因此代码甚至不会编译。要解决此问题,请添加“默认”返回值:

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

答案 1 :(得分:3)

无效,因为您需要返回一些默认值(return)。

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

答案 2 :(得分:0)

虽然方法在满足条件时返回true,但是当条件不满足时,它不指定返回值。该方法应涵盖所有代码路径(读取条件语句)。

答案 3 :(得分: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;

所以无论如何都会返回一个值。从好的方面来说,可读性增加