Palindrom.java [Last ned]

/*
 * Programmet tester ut en metode som sjekker om en
 * tegnsekvens er et palindrom, dvs. samme sekvens
 * uansett om den er lest fra høyre eller venstre.
 */
import static javax.swing.JOptionPane.*;
import java.util.*;
 
public class Palindrom {
 
  public static void main(String[] args) {
  /*
    // Først en enklere versjon: Kontroll av tegnsekvens
    String innTxt = showInputDialog("Gi en tekst:");
    String kopiTxt = "";
    int sistePos = innTxt.length()-1;
    for (int i=0; i<=sistePos; i++)
      kopiTxt += innTxt.charAt(sistePos-i);
 
    String utTxt = "Original: " + innTxt + "\n" +
                   "Reversert: " + kopiTxt + "\n" +
                   "Dvs. teksten er ";
    if ( innTxt.equals(kopiTxt) )
      utTxt += "et palindrom";
    else
      utTxt += "ikke et palindrom";
    showMessageDialog(null, utTxt);
  */
 
    // Versjon 2: Reverser tabellen
    String innTxt = showInputDialog("Gi en tekst:");
    char[] tekst = new char[innTxt.length()];
 
    for (int i=0; i<tekst.length; i++)
      tekst[i] = innTxt.charAt(i);
 
    char[] kopiTekst = Arrays.copyOf(tekst, tekst.length);
    reverser(kopiTekst);
 
    String utTxt = "Inntekst: " + skriv(tekst) + "\n" +
                   "Reversert: " + skriv(kopiTekst) + "\n" +
                   "Dvs. teksten er ";
    if ( Arrays.equals(tekst,kopiTekst) )
      utTxt += "et palindrom";
    else
      utTxt += "ikke et palindrom";
    showMessageDialog(null, utTxt);
  }
 
  // Metoden snur rekkefølgen av tabellverdiene
  public static void reverser(char[] tab) {
    int sistePos = tab.length - 1;
    // Plassbytte kun inn til midten av tabellen!
    for (int i=0; i<=sistePos/2; i++) {
      char hjelp = tab[i];
      tab[i] = tab[sistePos-i];
      tab[sistePos-i] = hjelp;
    }
  }
 
  // Hjelpemetode: Alternativ til Arrays.toString
  public static String skriv(char[] tab) {
    String txt = "[" + tab[0];
    for (int i=1; i<tab.length; i++)
      txt += ", " + tab[i];
    return txt + "]";
  }
 
}
Kildekode blir vist ved hjelp av GeSHi.