public class Caesar { static String msgKodieren(char key, char ch, boolean decode) { /* * Die Methode uebernimmt den Schluessel (key), einen Grossbuchstaben (ch), * die Option Kodieren(false)/Dekodieren(true) und gibt einen String * mit dem Buchstaben zurueck. */ char c=65; // 65 entspricht dem "A" (Grossbuchstabe) int i=1,j=0,k; StringBuffer s = new StringBuffer(1); // Kleiner String Buffer fuer 1 Char // // ch zu Uppercase (sonst klappt der Vergleich spaeter nicht) // s.append(ch); // Char in den String Buffer... String s1=s.toString(); // ...StringBuffer in den String... s1=s1.toUpperCase(); // ...String zu Uppercase... ch=s1.charAt(0); // ...und Uppercase zurueck in Char s.delete(0, s.length()); // Loeschen den Buffers, da er spaeter nocheinmal gebraucht wird // // key zu Uppercase // s.append(key);// gleiche Prozedur wie bei "ch" s1=s.toString(); s1=s1.toUpperCase(); key=s1.charAt(0); s.delete(0, s.length()); for (k=0,c=65; c65) ch--; else ch=90; s.append(ch); String sOut=s.toString(); return sOut; // �bergabe des Kodierten/Dekodierten Buchstaben } public static void main(String[] args) { // // Pruefung der Argumente // /* * Es wird ueberprueft, ob die Kommandozeilenparametern die richtige Anzahl haben * und ob der Kommandozeilenparameter, der den Schluessel angibt, die richtige Form hat. * Sind die Kommandozeilenparameter nicht korrekt, wird eine Fehlermeldung ausgegeben und * das Programm beendet sich. */ if (args[0].length()>1 // 1. Argument laenger als ein Buchstabe? || args[0].isEmpty()==true // 1. Argument fehlt? || (Character.isLetter(args[0].charAt(0))==true // 1. Argument = Buchstabe? && args[0].charAt(0)<=65 // 1. Argument = Grossbuchstabe? && args[0].charAt(0)>=90)// "" ? || (args[0].charAt(0)<=97 // 1. Argument = Kleinbuchstabe? && args[0].charAt(0)>=122) // "" ? || args[1].isEmpty()==true // 2. Argument fehlt? || args.length>=3) // 3. Argument vorhanden? System.err.print("Parameter ungueltig!"+"\n" +"Argument 1 sollte ein Gross-/Kleinbuchstabe sein!"+"\n" +"Argument 2 sollte eine beliebige Zeichenfolge sein!"); else { // // Wenn Eingaben korrekt: // char key=args[0].charAt(0); // Schluessel uebernehmen String msg=args[1]; // Nachricht (msg) uebernehmen StringBuffer s = new StringBuffer(msg.length()); // Buffer der Laenge msg.length for (int i=0; i=65 && ch<=90) if (Character.isUpperCase(key)==true) s.append(msgKodieren(key,msg.charAt(i),false)); // Kodieren else s.append(msgKodieren(key,msg.charAt(i),true)); // Dekodieren else {s.append(msg.charAt(i)); // Unkodiert } } // Ausgabe System.out.print("+++ +++ +++ +++ ++++ +++ +++ +++ +++ +++ +++ +++"+"\n" +"Klartext: "+msg+"\n" +"Kodiert: "+s+"\n" +"+++ +++ +++ +++ ++++ +++ +++ +++ +++ +++ +++ +++"); } } }