0

I'm working on a palindrome detector. I've already managed to make it work in some cases. When I type in a word like "Abba" it comes back as a palindrome. Great! But it doesn't do the same thing if I enter "cat". I can't use loops for this. Any ideas?

public class Palindrome {
    public static void main(String[]args) {
        Scanner in=new Scanner(System.in);

        System.out.print("Enter word");


        String start = in.nextLine();
        String end=start;

        boolean isPalindrome = (start == end);

        if (isPalindrome) {
            System.out.print("This is a palindrome");}
        else
            System.out.print("This is not a palindrome");

    } 
}
Talendar
  • 1,841
  • 14
  • 23
Tillix
  • 1
  • 1
  • 1
    you're always comparing exactly the same instance of the string – Iłya Bursov Sep 19 '18 at 23:39
  • Try writing some psuedocode for the logic you need to implement to determine if the word is a palindrome or not. Your current approach doesn't make sense so far, because as @IłyaBursov says, you're comparing the word entered with itself. This obviously is not the logic you need to determine if a word is a palindrome. Once you have the logic roughed out, then try writing the code to implement the logic. – Kevin Hooke Sep 19 '18 at 23:44

1 Answers1

0

start==end always compares the same string. If the input is "cat", it checks if "cat"=="cat" which is true.

Use recursion if you are not allowed to use loops:

String input=in.nextLine();

isPalindrome(0,start.length()-1,input);

boolean isPalindrome(left,right,input){
   if (left>=right){
      // left==right for odd palindrome
      // left>right for even palindrome
      return true;
   }
   if (str.charAt(left)!=str.charAt(right)){
       return false;
   }
   return isPalindrome(left+1,right-1,str);
}
nupadhyaya
  • 1,909
  • 1
  • 14
  • 14