我有以下代码块:
public static boolean isReverse (String s1, String s2) {
if((s1.length()==1)&&s2.length()==1) {
if(s1.equals(s2)) {
return true;
}
}
else if(s1.charAt(0)==s2.charAt(s2.length()-1)) {
return isReverse(s1.substring(1, s1.length()-1),s2.substring(0, s2.length()-2));
}
else return false;
}
我知道通常您需要一个 return 语句来涵盖所有 if 语句都不为真的可能性。这就是为什么我在末尾有 else return false
,但我仍然收到错误“必须返回 boolean 类型的结果”。这是我正在使用它的电话:
public static void main(String[] args) {
if(isReverse("Java", "avaJ")) {
System.out.println("worked");
}
}
最佳答案
在第一个if
中有可能没有return语句:
if((s1.length()==1)&&s2.length()==1) {
//What if this is not true?
if(s1.equals(s2)) {
return true;
}
}
在这个 block 中,如果 s1
不等于 s2
那么它将跳出 if
并且因为最后一个 返回 false ;
链接到 else
block ,它将到达方法的末尾,没有任何返回。
要解决此问题而不是else return false
,只需return false;
关于java - 为什么编译器不能识别我的返回语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52824890/