0

我正在制作一个 java 程序来检查用户的输入,看看它是否是回文。我的代码在下面,但在:

if(isPalindrome() = true)
     System.out.println("You typed a palindrome!");

部分我收到错误消息“赋值的左侧必须是变量”。不是变量吗?我能做些什么来解决它?任何建议表示赞赏!

public class PalindromeChecker
{
public static void main(String [] args)
{
    String answer;
    while(answer.equalsIgnoreCase("y"))
    {
        System.out.println("Please enter a String of characters.  I will check to see if");
        System.out.println("what you typed is a palindrome.");
        Scanner keys = new Scanner(System.in);
        String string = keys.nextLine();
        if(isPalindrome() = true)
            System.out.println("You typed a palindrome!");
        else
            System.out.println("That is not a palindrome.");
        System.out.print("Check another string? Y/N: ");
        answer = keys.next();
    }
}

public static boolean isPalindome(String string)
{
    if(string.length() <= 0)
        System.out.println("Not enough characters to check.");
    string = string.toUpperCase();
    return isPalindrome(string,0,string.length()-1);
}

private static boolean isPalindrome(String string, int last, int first)
{
    if(last <= first)
        return true;
    if(string.charAt(first) < 'A' || (string.charAt(first) > 'Z'))
        return isPalindrome(string,first + 1, last);
    if(string.charAt(last) < 'A' || (string.charAt(last) > 'Z'))
        return isPalindrome(string,first, last - 1);
    if(string.charAt(first) != string.charAt(last))
        return false;
    return isPalindrome(string,first + 1, last - 1);
}
}
4

3 回答 3

3

使用双等号==进行比较。一个等号=是赋值运算符。

if (isPalindrome() == true)

或者更好的是,根本不使用布尔比较==。如果你只写,它读起来更像英语:

if (isPalindrome())
于 2012-11-28T00:45:38.793 回答
1

您的方法调用应该是: isPalindrome 期望字符串参数:

if(isPalindome(string ))

而且您不需要进行相等性检查,因为返回类型无论如何都是布尔值。

于 2012-11-28T00:45:55.923 回答
0

利用

if(isPalindome(string)==true)

反而。

两个变化:

1) 你需要传递stringisPalindome.

2)为了比较,您需要使用两个等号,而不仅仅是一个。

另外,我相信您可能打算写“isPalindrome”而不是“isPalindome”

于 2012-11-28T00:46:02.100 回答