缺少Java中的return语句错误

我目前正在用Java编写一个回文测试器,用于我在高中学习的课程。 我已经向老师求助了,他也很困惑。 我希望stackoverflow上的社区可以帮助我。 谢谢。

public class Palindrome { private String sentence; public Palindrome(String s) { sentence = s; } public boolean isPalindrome() { if(sentence.length() <= 1) { return true; } if(sentence.charAt(0) == sentence.charAt(sentence.length()-1)) { sentence = sentence.substring(1, sentence.length()-1); isPalindrome(); } else return false; } } 

你需要return isPalindrome(); 。 否则该方法在这种情况下不返回任何内容,并且声明它返回一个布尔值。

更改

 if (sentence.charAt(0) == sentence.charAt(sentence.length()-1)) { sentence = sentence.substring(1, sentence.length()-1); isPalindrome(); } 

 if (sentence.charAt(0) == sentence.charAt(sentence.length()-1)) { sentence = sentence.substring(1, sentence.length()-1); return isPalindrome(); } 

为了使方法得到遵守,JVM需要确保该方法对每个可能的情况都有一个return语句(这是你没有做过的事情)。

如果您的代码采用此路径,则没有return语句。 如果您的老师感到困惑,您需要一位新老师。

 if(sentence.charAt(0) == sentence.charAt(sentence.length()-1)) { sentence = sentence.substring(1, sentence.length()-1); isPalindrome(); } 

如果你真的想在else子句中返回false,那么你的最后一个if子句会错过一个返回。

您想使用递归方式来检查句子是否是回文。 你最好在下面的代码片段中返回isPalindrome()方法

 if(sentence.charAt(0) == sentence.charAt(sentence.length()-1)) { sentence = sentence.substring(1, sentence.length()-1); return isPalindrome(); } 

这是我的代码:

 public class palindrome { private String sentence; public palindrome(String s) { sentence = s; } public boolean isPalindrome() { if(sentence.length() <= 1) { return true; } if(sentence.charAt(0) == sentence.charAt(sentence.length()-1)) { sentence = sentence.substring(1, sentence.length()-1); return isPalindrome(); } else return false; } public static void main(String [] args) { palindrome p=new palindrome("aabbaa"); if(p.isPalindrome()) System.out.println("yes"); else System.out.println("no"); } }