Reputation: 45
I'm making a java program that checks the user's input to see if it's a palindrome. My code is below, but at the:
if(isPalindrome() = true)
System.out.println("You typed a palindrome!");
part I get the error saying "the left side of the assignment must be a variable." isn't it a variable? and what can I do to fix it? Any advice is appreciated!
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);
}
}
Upvotes: 0
Views: 1100
Reputation: 66677
Your method call should be: isPalindrome expecting String parameter:
if(isPalindome(string ))
And you don't need to do equality check because return type is anyway boolean.
Upvotes: 1
Reputation: 9392
Use
if(isPalindome(string)==true)
Instead.
Two changes:
1) You need to pass string
to isPalindome
.
2) You need to use two equal signs, not just one, for the sake of comparison.
Also, I believe you may have meant to write "isPalindrome" instead of "isPalindome"
Upvotes: 0
Reputation: 362137
Use double equals ==
for comparisons. A single equal sign =
is the assignment operator.
if (isPalindrome() == true)
Or better yet, for boolean comparisons don't use ==
at all. It reads more like English if you just write:
if (isPalindrome())
Upvotes: 3