Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么编译器不能识别我的返回语句?_Java_String_Methods_Boolean_Logic - Fatal编程技术网

Java 为什么编译器不能识别我的返回语句?

Java 为什么编译器不能识别我的返回语句?,java,string,methods,boolean,logic,Java,String,Methods,Boolean,Logic,我有以下代码块: 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.c

我有以下代码块:

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;  
}
我理解,通常情况下,您需要一个返回语句来覆盖if语句中没有一个是真的可能性。这就是为什么我在最后让
else返回false
,但仍然得到错误“必须返回布尔类型的结果”。以下是我使用它的电话:

public static void main(String[] args) {
    if(isReverse("Java", "avaJ")) {
        System.out.println("worked");
    }
}

在第一个
if
中,可能不存在返回语句:

if((s1.length()==1)&&s2.length()==1) {
    //What if this is not true?
    if(s1.equals(s2)) {
        return true;
    }
}
在该块中,如果
s1
不等于
s2
,则它将跳出
if
,并且自上次
返回false以来
链接到
else
块,它将到达方法末尾,不返回任何内容


要解决此问题,而不是
否则返回false
,只需
返回false

第一个
if
具有嵌套的
if
条件,这将导致一个分支,在该分支中您不返回任何内容。您可以删除最后一个
else
,并使其
返回false默认情况下。或者只需将嵌套的
if
修改为
返回本身。就是改变这个

if((s1.length()==1)&&s2.length()==1) {
    if(s1.equals(s2)) {
        return true;
    }
}
刚好(缩进并去除牙槽嵴)

我们还可以在一行中使用
StringBuilder
重新实现该方法,如

public static boolean isReverse(String s1, String s2) {
    return new StringBuilder(s1).reverse().toString().equals(s2);
}


否则返回false
更改为
返回false
。由于该
else
public static boolean isReverse(String s1, String s2) {
    return new StringBuilder(s1).reverse().toString().equals(s2);
}
public static boolean isReverse (String s1, String s2) {    
    if(s1.length()==1&&s2.length()==1) {          
        if(s1.equals(s2)) {             
            return true;
        } else {
            return false; // This portion need to be return some result.
        }
    }       
    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;  
}
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));
    }       
    return false;  // Just return the result without else
}