为什么这种结构不可接受?无论如何它返回一个布尔值对吗??
public boolean a()
{
if(condition)
{
if(condition)
{
if(condition)
{
return true;
}
}
}
}
答案 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;
所以无论如何都会返回一个值。从好的方面来说,可读性增加