[英]Missing Return Statement Error java
public String getValue(int n)
{
if (n % ham == 0 || n % spam==0)
{
if(n % ham == 0 && n % spam == 0)
{
return "hamspam";
}
else if(n % ham == 0 && n % spam != 0)
{
return "ham";
}
else if(n % ham != 0 && n % spam==0)
{
return "spam";
}
}
else
{
return Integer.toString(n);
}
}
从逻辑上讲,我们可以得出结论,如果n
是ham
或spam
的倍数,则n
是两者的倍数,或者恰好是两者之一。 我们可以从逻辑上得出结论,在外部if
内,没有任何一种方法可以实现内部3个条件中的至少一个为true
并执行return
。
但是Java编译器不是那么聪明。 它只是认为没有return
过最后else if
在该块,并得出结论,存在不具有执行路径return
,所以它给人的编译错误。
逻辑上,如果前两个条件为false
,则给定外部if
,则第三个条件必须为true。
更换
else if(n % ham != 0 && n % spam==0)
与
else
它在逻辑上是等效的,并且编译器还将对每个执行路径都具有return
语句感到满意。
public String getValue(int n)
{
if (n % ham == 0 || n % spam==0)
{
if(n % ham == 0 && n % spam == 0)
{
return "hamspam";
}
else if(n % ham == 0 && n % spam != 0)
{
return "ham";
}
else if(n % ham != 0 && n % spam==0)
{
return "spam";
}
// this return is missing
return "something";
}
else
{
return Integer.toString(n);
}
}
在第一个if
语句中,您需要else
子句或return
值。
详细说明,如果:
if (n % ham == 0 || n % spam==0) //is true
if(n % ham == 0 && n % spam == 0) // is false
{
return "hamspam";
}
else if(n % ham == 0 && n % spam != 0) //is false
{
return "ham";
}
else if(n % ham != 0 && n % spam==0)//is false
{
return "spam";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.