November 19, 2003

Testing for a Palindrome

Enter a sentence below to find out if it is a palindrome.



/*
Test to see if an input sentence is a palindrome
*/
import java.awt.*;
   import java.applet.Applet;
   import java.awt.event.*;

public class Palindrome extends Applet implements ActionListener {
   // GUI Variables
   Label enterLabel = new Label("Enter a sentence...", Label.LEFT);
   TextField enterField = new TextField(60);
   Button goButton = new Button("Is it a Palindrome?");
   
   // Program variables
   String sentence;
   
   public void init() {
      makeGui();
   
   } // init
   
   public void paint(Graphics g) {
      g.drawString("Sentence = "+sentence, 30, 30);
   
      sentence = process(sentence);	// clean it up first!
      g.drawString("Sentence = "+sentence, 30, 50);
   
      // see if it is a palindrome
      if (isPalindrome(sentence))
         g.drawString("It is a palindrome!", 30, 70);
      else
         g.drawString("It is not a palindrome.", 30, 70);
   } // paint
   
   public String process(String s) {
      String clean;
   
      // Convert all letters to lower case
      s = s.toLowerCase();
   
      // Remove all punctuation
      clean = "";
   
      for (int i=0; i < s.length(); i++) {
         if (isAlpha(s.charAt(i)))
            clean = clean + s.charAt(i);
      }
      return clean;
   
   } // process
   
   public boolean isAlpha(char c) {
   // retruns true if c is between 'a'..'z'
   
      return ((c >= 'a') && (c <= 'z'));
   
   }// isAlpha
   
   public boolean isPalindrome(String s) {
   // returns true is s is a palindrome, false otherwise
   
      int left = 0;
      int right = s.length() - 1;
   
      while( left < right ) {
        if (s.charAt(left) != s.charAt(right))
        return false;
   
        left++;
        right--;
      }
      return true;
   
   } // isPalindrome
   
   public void actionPerformed(ActionEvent e) {
   
      // get the input sentence
      sentence = enterField.getText();
   
      repaint();
   
   } // actionPerformed
   
   private void makeGui() {
   
   // create 3x1 panel
   Panel p = new Panel();
   p.setLayout(new GridLayout(3,1));
   
   // Draw the label
   p.add(enterLabel);
   
   // Draw the text field
   Panel tPanel = new Panel();
   tPanel.add(enterField);
   p.add(tPanel);
   
   // Draw the button
   Panel bPanel = new Panel();
   bPanel.add(goButton);
   p.add(bPanel);
   
   p.setBackground(Color.cyan);
   
   // applet layout
   this.setLayout(new BorderLayout());
   this.add(p, "South");
   this.setBackground(Color.yellow);
   
   // Register listener for button
   goButton.addActionListener(this);
   } // makeGui
   
} // Palindrome
 

Back to Class Examples