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

标签 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.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/

相关文章:

java - NetBean EJB 客户端应用程序构建失败

java - 更灵活的工厂

java - 使用 Spring Boot 负载测试 tomcat 7 时出现连接异常

C - 包含整数和字符串的文件(除法问题)

Java 字符串方法返回 Null?

java - 如何在 Struts 2 optgroup 中显示 Map 值的元素(对象列表)?

c# - 根据标准比较两个对象

ios - 自定义 NSLog 方法(可变参数)

java - 是否可以获取对 Java 方法的引用以便稍后调用它?

java - 创建一个返回数字范围的方法?