0

我目前正在为我在高中上的一门课用 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;
    }

}
4

5 回答 5

7

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

于 2013-09-13T13:58:24.133 回答
3

改变

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 语句(这是您尚未完成的事情)。

于 2013-09-13T13:58:31.630 回答
2

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

if(sentence.charAt(0) == sentence.charAt(sentence.length()-1))
{
    sentence = sentence.substring(1, sentence.length()-1);
    isPalindrome();
}
于 2013-09-13T14:00:37.413 回答
0

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

于 2013-09-13T13:59:21.253 回答
0

您想使用递归方式来检查句子是否为回文。你最好在下面的代码片段中返回 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");
    }
}
于 2016-05-18T01:03:30.640 回答