Ceasarkoding.java [Last ned]

/*
 * Programmet leser en klartekst og skriver den ut i
 * Cæsar-kode, og samme omkoding den motsatte veien.
 */
import static javax.swing.JOptionPane.*;
import static java.lang.Integer.*;
 
public class Ceasarkoding {
 
  public static void main(String[] args) {
 
    int nøkkel = parseInt( showInputDialog("Gi nøkkel:") );
    String klarTxt = showInputDialog("Gi klartekst:");
    klarTxt = klarTxt.toUpperCase();
 
    String kodeTxt = kode(klarTxt,nøkkel);
 
    showMessageDialog(null, "Klar: " + klarTxt + "\n" +
                            "Kode: " + kodeTxt);
 
    nøkkel = parseInt( showInputDialog("Gi nøkkel:") );
    kodeTxt = showInputDialog("Gi kodetekst:");
    kodeTxt = kodeTxt.toUpperCase();
 
    klarTxt = dekode(kodeTxt,nøkkel);
    showMessageDialog(null, "Kode: " + kodeTxt + "\n" +
                            "Klar: " + klarTxt);
  }
 
  public static String kode(String txt, int key) {
    char[] kode = new char[26]; // 26 eng.bokstaver
    char bokstav = 'A';
    for (int i=key; i<26; i++)
      kode[i] = bokstav++;
    for (int i=key-1; i>=0; i--)
      kode[i] = bokstav++;
 
    String kodeAvTxt = "";
 
    for (int i=0; i<txt.length(); i++) {
      char tegn = txt.charAt(i);
      if ( 65 <= tegn && tegn <= 91 )
        kodeAvTxt += kode[tegn-65];
      else
        kodeAvTxt += tegn;
    }
    return kodeAvTxt;
  }
 
  public static String dekode(String txt, int key) {
    char[] kode = new char[26]; // 26 eng.bokstaver
    char bokstav = 'A';
    for (int i=key; i<26; i++)
      kode[i] = bokstav++;
    for (int i=key-1; i>=0; i--)
      kode[i] = bokstav++;
 
    String dekodeAvTxt = "";
 
    for (int i=0; i<txt.length(); i++) {
      char tegn = txt.charAt(i);
      if ( 65 <= tegn && tegn <= 91 ) {
        for (int j=0; j<26; j++)
           if ( tegn == kode[j] )
             dekodeAvTxt += (char)(65+j);
        }
      else
        dekodeAvTxt +=tegn;
    }
    return dekodeAvTxt;
  }
 
}
Kildekode blir vist ved hjelp av GeSHi.