public class FunctionalCaesar extends MiniJava { public static char shift(char c, int k) { // negative Eingabe in positive konvertieren, um es unten einfach zu halten: k %= 26; // -29 -> -3 if (k<0) k += 26; // positiv machen if (c >= 'A' && c <= 'Z') { c -= 'A'; // Alphabetstart abziehen, um Modulo rechnen zu können c += k; // Shift durchführen c %= ('Z'-'A'+1); // Modulo 26, da evtl. über Z hinaus geshiftet c += 'A'; // wieder richtig hinrücken } else if (c >= 'a' && c <= 'z') { c -= 'a'; // Alphabetstart abziehen, um Modulo rechnen zu können c += k; // Shift durchführen c %= ('z'-'a'+1); // Modulo 26, da evtl. über z hinaus geshiftet c += 'a'; // wieder richtig hinrücken } return c; // (eventuell verändertes) Zeichen zurückgeben } public static String encrypt(String s, int k) { String sVerschluesselt = ""; for (int i = 0; i < s.length(); i++) { sVerschluesselt += shift(s.charAt(i), k); } return sVerschluesselt; } public static String decrypt(String s, int k) { return encrypt(s, -(k%26)); } public static void main(String[] args) { // Zu Teilaufgabe 3: String str = "Mrn pnvnrwbcnw Jdopjknw bcnuuc Ajyqjnuj"; /* System.out.println("Entschlüsseln von Aufgabe 3 mit Key ...\n"); // 9 for (int i = 1; i < 25; i++) { System.out.println(i + ": " + decrypt(str, i)); } */ write(decrypt(str, 9)); String input = readString(); int k = read(); String out = encrypt(input, k); write(out); } }