The Palindrome Applet
/* Applet that takes a sentence and answers if it 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, cleanSentence;
boolean valid = false;
public void init() {
makeGUI();
}
public void paint( Graphics g ) {
int x = 20, y = 20;
if (valid) {
// Draw the sentence
g.drawString("Sentence = " + Sentence, x, y+= 20);
g.drawString("Clean Sentence = " + cleanSentence, x, y+= 20);
// is it a palindrome?
if (isPalindrome(cleanSentence))
g.drawString("It is a palindrome!", x, y+= 20);
else
g.drawString("It is not a palindrome.", x, y+=20);
}
} // paint
public boolean isPalindrome(String s) {
for (int Left=0, Right = s.length()-1; Left < Right; Left++, Right--) {
if (s.charAt(Left) != s.charAt(Right))
return false;
}
return true;
} // isPalindrome
public void processSentence() {
Sentence = enterField.getText(); // get the sentence
// Clean up the sentence
// 1. convert it all to lower case
cleanSentence = Sentence.toLowerCase();
// 2. remove all non alphabetic characters from it
// Convert cleanSentence into a character array
char [ ] cs = cleanSentence.toCharArray();
int L = cs.length;
// Remove all non-alpha from character array
for (int i=0; i < L; i++) {
// if ith char in cs is not alpha, remove it
if (!isAlpha(cs[i])) {
// remove ith character
for (int j=i+1; j < L; j++)
cs[j-1] = cs[j];
// decrease the length by 1
L--;
i--;
}
}
// convert character array back into a string
cleanSentence = new String(cs, 0, L);
valid = true;
} // processSentence
boolean isAlpha(char c) {
return (c >= 'a' && c <= 'z');
} // isAlpha
public void actionPerformed(ActionEvent e) {
if (e.getSource() == goButton) // New way to check for button
processSentence();
repaint();
} // actiopPerformed
public void makeGUI() {
// Create a 3x1 panel
Panel p = new Panel();
p.setLayout(new GridLayout(3,1));
// Draw the Label
p.add(enterLabel);
// Draw the TextField
Panel ePanel = new Panel();
ePanel.add(enterField);
p.add(ePanel);
// 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");
// Register Listener
goButton.addActionListener(this);
} // makeGUI
}