Java 我的代码似乎跳过了return语句

Java 我的代码似乎跳过了return语句,java,recursion,return,Java,Recursion,Return,我正在用Java编写一个回文检查布尔函数——我正在学习递归。当单词被剥离到最后(内部)一个或两个字母时,程序应该检查这两个字母是否相同,这似乎不起作用-函数总是返回false。 奇怪的是,当程序返回时,它只是继续工作——我知道这一点,因为它继续打印我的检查点(打印语句)。执行print函数,但忽略后面的return语句。即使函数应该返回true(=单词是回文),最后它仍然返回false 我已经尝试了if、if-else语句、返回语句的不同位置的组合,函数isPalindrome与主函数正常工作,

我正在用Java编写一个回文检查布尔函数——我正在学习递归。当单词被剥离到最后(内部)一个或两个字母时,程序应该检查这两个字母是否相同,这似乎不起作用-函数总是返回false。 奇怪的是,当程序返回时,它只是继续工作——我知道这一点,因为它继续打印我的检查点(打印语句)。执行print函数,但忽略后面的return语句。即使函数应该返回true(=单词是回文),最后它仍然返回false

我已经尝试了if、if-else语句、返回语句的不同位置的组合,函数isPalindrome与主函数正常工作,我还尝试了大量打印函数的调试

我的代码:

public static boolean isPalindrome(String word) {
    int wlength = word.length();
    System.out.printf("wlength = %d%n", wlength);
    
    if (wlength == 1) {
        System.out.printf("wlength == 1!!!!%n");
        return true;

    } else if (wlength == 2) {
        System.out.printf("wlength == 2%n");
        String first = word.substring(0, 1);
        String last = word.substring(1, 2);
        if (first == last) {
            return true;
        } else {
            return false;
        }
    }

    String first = word.substring(0, 1);
    String last = word.substring(wlength-1, wlength);
    System.out.printf("first = %s, last = %s %n", first, last);
    if (first.compareTo(last) == 0) {
        System.out.printf("first == last%n");
        String inner= word.substring(1, wlength-1);
        System.out.printf("new Word = %s RECURSION%n", inner);
        isPalindrome(inner);
    } 
    System.out.println("END");
    return false;
    
}
谢谢

if(prva.compareTo(last)==0){
System.out.printf(“第一个==最后一个%n”);
字符串内部=字。子字符串(1,WLENGHT-1);
System.out.printf(“新单词=%s递归%n”,内部);

isPalindrome(内部)//
prva
未定义。您忽略了内部调用的返回值。所有长度大于2的调用都会在最后一次println中执行,并返回false。您能否提供一个导致问题的示例输入字并发布相应的控制台输出,否则任何人都很难诊断出发生了什么。请满足以下要求:说它肯定不会“忽略”return语句!
isPalindrome(内部);
->
return isPalindrome(内部);
您也尝试过使用调试器单步执行代码,它比打印语句更有效。