Dechiffrieren eines Textes mit Cäsars Methode?
Hallo zusammen,
ich habe ein Problem, bei dem ich Hoffe, ihr könnt mir helfen. Ich muss einen Text chiffrieren/dechiffrieren, wie in der folgenden Aufgabe: Das Chiffrieren und Dechiffrieren von Textnachrichten hat eine lange Tradition. Eine der ¨altesten bekannten Chiffrierungsmethoden geht auf den r¨omischen Feldherr Gaius Julius Caesar zuruck. Daher ¨ spricht man auch von der Caesar-Verschlüsselung. Sie ist eine einfache, symmetrische Verschlüsselung, ¨ d.h. es wird immer derselbe Schlüssel für das Verschlüsseln und das Entschlüsseln verwendet. Bei ¨ der Verschlusselung wird jeder Buchstabe des Klartexts auf einen anderen Buchstaben abgebildet. ¨ Dabei gibt der Schlussel an, um wie viele Stellen der Buchstabe im Alphabet verschoben wird. Zum ¨ Beispiel wird aus ” Hello World“ beim Schlussel drei ¨ ” Khoor Zruog“.
Implementieren Sie die Methode cipher, welche einen Text mittels Caesar Verschlusselung chiffriert ¨ und alle Möglichkeiten der Chiffrierung in einer Liste zuruck gibt.
Aber ich bekomme immer nur eine Dechiffrierungsvariante ausgegeben. Könnt ihr mir sagen warum?

2 Antworten
Mich wundert eher, dass überhaupt eine ausgegeben wird... (Evtl. macht ArrayList.toString() in etwa das gleiche wie ArrayList.get(0).toString()...)
Aber zur eigentlichen Antwort:
Versuch mal die Zeile
System.out.println(cipher(text));
durch das zu ersetzen:
for(String encryption : cipher(text)){
System.out.println(encryption);
}
P.S.: Allerdings hat dein Code noch ein par andere Probleme... Versuch mal als Eingabetext etwas wie "Oh, oh... Das könnte schiefgehen...". Evtl. kommst ja selbst dahinter, wo das Problem dabei liegt. ;)
Habe den Fehler gefunden und erfolgreich beseitigt... xD
Eine banale Sache, ich habe vergessen die Variable "i", nach der inneren Schleife, zurückzusetzen.
Okay, das hatte ich, als ich meine Antwort geschrieben habe ebenfalls übersehen... %D
Könntest aber an der Stelle statt eine while-Schleife auch einfach ne for-Schleife benutzen:
for(int i = 0; i < text.length(); ++i){
//TODO: Buchstabenverschiebung hier implementieren.
}
Hat leider nicht funktioniert... Trotzdem danke :)
Mir ist bewusst, dass das Programm Macken hat und ich noch alle Zeichen die nicht Buchstaben sind rausfiltern muss.