1  public class LoopPalindromes
  2  {
  3     public static void main(String[] args)
  4     {
  5        String sentence1 = "Madam, I'm Adam!";      
  6        System.out.println(sentence1);
  7        System.out.println("Palindrome: " + isPalindrome(sentence1));
  8        String sentence2 = "Sir, I'm Eve!";      
  9        System.out.println(sentence2);
 10        System.out.println("Palindrome: " + isPalindrome(sentence2));
 11     }
 12  
 13     /**
 14        Tests whether a text is a palindrome.
 15        @param text a string that is being checked
 16        @return true if text is a palindrome, false otherwise
 17     */
 18     public static boolean isPalindrome(String text)
 19     {
 20        int start = 0;
 21        int end = text.length() - 1;
 22        while (start < end)
 23        {
 24           char first = Character.toLowerCase(text.charAt(start));
 25           char last = Character.toLowerCase(text.charAt(end));
 26           if (Character.isLetter(first) && Character.isLetter(last))
 27           {
 28              // Both are letters.
 29              if (first == last)
 30              {
 31                 start++;
 32                 end--;
 33              }
 34              else
 35              {
 36                 return false;
 37              }
 38           }
 39           if (!Character.isLetter(last)) { end--; }
 40           if (!Character.isLetter(first)) { start++; }
 41        }
 42        return true;
 43     }
 44  }