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