--- author: Florian Fischer lang: de title: Caesar Implementierung leicht ---
**Wie bekomme ich jedes Zeichen in einem Text?** Java bietet die Methode [`char String.charAt(int pos)`{.java}](), um auf ein einzelnes Zeichen (`char`{.java}) in einem String an der 0-indizierten Stelle `pos`{.java} zuzugreifen. Mit einer `for`{.java} Schleife und der Länge des Strings ([`String.length()`{.java}]()) hast du alles was du brauchst.
**Wie erkenne ich Kleinbuchstaben?** * Der erste Kleinbuchstabe `a` hat den Zahlenwert `97`. * Der letzte Kleinbuchstabe `z` hat demnach den Zahlenwert `122`.
**Wie schaffe ich es, dass ich den Zeichenbereich `a-z` nicht verlasse?** * Mit dem [Modulo-Operator `%`](https://de.wikipedia.org/wiki/Modulo) * oder mit geeigneten `if`{.java} Bedingungen kannst du dafür sorgen, dass dein neues Zeichen immer noch im Zeichenbereich `a-z` liegt.
**Wie kann ich einen neuen `String`{.java} zusammenbauen?** Du kannst einzelne Zeichen zu einem `String`{.java} einfach mit dem Plus-Operator `+` hinzufügen.
**Wie kann ich `int`{.java} in `char`{.java} umwandeln?** In Java können Daten vom Typ `int`{.java} mit einem [Type-Cast]() zum Typ `char`{.java} umgewandelt werden. Auch das Ergebnis einer Rechnungen kann umgewandelt werden. * `char c = (char)27; // Umwandlung einer Zahl`{.java} * `char c = (char)("a".charAt(0) + 27); // Umwandlung eines Ergebnisses`{.java}
**Lösung** Sicher dass du die Lösung sehen willst?
**Ja!** ```java static String caesar(String eingabe, int verschiebung) { String ausgabe = ""; for (int i = 0; i < eingabe.length(); i++) { char c = eingabe.charAt(i); // Nur Kleinbuchstaben werden verschoben. if (c >= 97 && c <= 122) { // 'a' hat die Position 0 im Alphabet. int pos = c - 97; // Berechne die neue Position im Alphabet. pos = (pos + verschiebung) % 26; // Addiere den Wert von 'a', // um den Zahlenwert des Zeichens zu erhalten. c = (char)(pos + 97); } ausgabe += c; } return ausgabe; } ```