Caesar Verschlüsselng

katchy

Aktives Mitglied
Hallöchen:)
ich weiß dass es schon viele Beiträge zur Caesar Verschlüsselung gibt, jedoch kann mir keiner weiter helfen.
Ich soll nun eine einfach Caesar Verschlüsselung programmieren und mein Code sieht wie folgt aus:

Java:
static char[] verschluesseln (char[] str, int verschiebung){
        char [] verschluesselt = new char[str.length];
       
        for (char i=0 ; i <str.length; i++){
            int verschieben = (str [i] + verschiebung)%128;
            verschluesselt [i] = (char) verschieben;
        }
        return verschluesselt;
    }
    public static void main (String [] args){
        char []verschluesseln = {'a', 'b', 'c'};
        int verschieben = 3;
        verschluesseln = verschluesseln (verschluesseln, verschieben);
        IO.println (verschluesseln (verschluesseln, verschieben));
    }

Da kommt aber nur Mist bei raus und ich finde den Fehler einfach nicht:/
Könnt ihr mir helfen?

Liebe Grüße
Katchy
 

Viktim

Bekanntes Mitglied
verschluesseln = verschluesseln (verschluesseln, verschieben);
IO.println (verschluesseln (verschluesseln, verschieben));
Da liegt der Fehler ;)
Du verschlüsselst das ganze insgesammt 2 mal. Erstmal verschlüsselst du das ganze und überschreibst dein verschlüsseln array und beim schreiben verschlüsselst dus dann nochmal :D

Oder was meinst du?
 

InfectedBytes

Top Contributor
was meinst du denn mit "es kommt nur mist raus"? Das ist leider keine hilfreiche Fehlerbeschreibung.
Falls du willst, dass nur lateinische Buchstaben ausgegeben werden, dann solltest du dir mal ASCII ansschauen
 

katchy

Aktives Mitglied
mittlerweile sieht mein Code so aus:
Java:
    static char[] verschluesseln (char[] str, int verschiebung){
        char[] verschluesselt = new char[str.length];
        for (char i=0 ; i <str.length; i++){
            if ('a' <= verschluesselt[i] && verschluesselt[i] <= 'z') {
                   int pos = verschluesselt[i] - 'a' + 1 + verschiebung;     
                   verschluesselt [i] = (char) pos; 
                   IO.print(verschluesselt[i]);
            }
         }
        return verschluesselt;
    }
    public static void main (String [] args){
        char[]verschluesseln = {'a', 'b'};
        int verschieben = 3;
       
        for(int i=0; i<verschluesseln.length; i++) {
            IO.print(verschluesseln[i]);
        }
        char []verschluesseln2 = verschluesseln (verschluesseln, verschieben);
       
    }

jedoch gibt er mir immer nur a und b aus aber vschluesselt diese Buchstaben nicht.
Der Fehler muss in der If Bedingung liegen, aber ich weiß nicht was daran falsch sein soll:/

Liebe Grüße
 

Cromewell

Top Contributor
Ich versteh die ganze If-Bedingung nicht.
Mach doch einfach
Java:
char pos = str[i]+verschiebung;
 

Cromewell

Top Contributor
Java:
char[] verschluesselt = new char[str.length];
for (char i=0 ; i <str.length; i++){
    int pos = str[i]+verschiebung;
    verschluesselt[i] = (char) pos;
}
return verschluesselt;

Das wäre eine Möglichkeit.
 

Cromewell

Top Contributor
Gebe ich das genau so bei mir in den Code ein kommt das als Ausgabe: [C@2a139a55
Das kann irgendwie nicht stimmen^^
Java:
static char[] verschluesseln (char[] str, int verschiebung){
    char[] verschluesselt = new char[str.length];
    for (char i=0 ; i <str.length; i++){
        int pos = str[i]+verschiebung;
        verschluesselt[i] = (char) pos;
    }
    return verschluesselt;
}
public static void main (String [] args){
    char[]verschluesseln = {'a', 'b'};
    int verschieben = 3;

    for(int i=0; i<verschluesseln.length; i++) {
        System.out.println(verschluesseln[i]);
    }
    char []verschluesseln2 = verschluesseln(verschluesseln, verschieben);
    for(int i=0; i<verschluesseln2.length; i++) {
        System.out.println(verschluesseln2[i]);
    }

}

EDIT: Das gibt einmal das Anfangspaar aus und einmal verschlüsselt.
EDIT2: Also in dem Fall a, b und d, e
 

Dompteur

Top Contributor
Wenn du noch auf gültige Zeichen abfragen willst, dann musst du noch folgendes einfügen.
Java:
            if ('a' >= str[i] && str[i] <= 'z') {
Beachte das größer gleich bei 'a'.
 

Dompteur

Top Contributor
Damit dann auch noch das 'z' richtig umgewandelt wird, sollte folgender Code eingesetzt werden.
Java:
        int pos = ( str[i] - 'a' + verschiebung ) % 26 + 'a';
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Feststellen, dass Wert zu groß; Caesar Chiffre Java Basics - Anfänger-Themen 3
T Fehler in Caesar-Chiffre Java Basics - Anfänger-Themen 7
N Erste Schritte JFrame Caesar-Verschlüsselung Java Basics - Anfänger-Themen 23
M Caesar Chiffre Java Basics - Anfänger-Themen 3
Y Caesar Verschlüsselung Fehler Java Basics - Anfänger-Themen 4
N Caesar Entschlüsselungsprogramm Java Basics - Anfänger-Themen 10
N Caesar Verschlüsselung Java Basics - Anfänger-Themen 2
J Erste Schritte Caesar - Code Verbesserung Java Basics - Anfänger-Themen 2
S Caesar Verschlüsselung Start Hilfe Java Basics - Anfänger-Themen 4
H Caesar-Verschlüsselung - Was stimmt nicht? Java Basics - Anfänger-Themen 6
J Caesar Ciphers funktioniert nicht Java Basics - Anfänger-Themen 3
S Caesar-Verschlüsselung Problem/Frage Java Basics - Anfänger-Themen 4
B Textentschlüsselung nach Caesar Java Basics - Anfänger-Themen 3
M Caesar Encrypt+Decrypt Java Basics - Anfänger-Themen 3
K Caesar-chiffre Java Basics - Anfänger-Themen 5
F Nachrichtenverschlüsselung nach Caesar: Java Basics - Anfänger-Themen 4
C weniger code für: caesar + reverse? Java Basics - Anfänger-Themen 8
P Caesar Ver- und Entschlüsselung Java Basics - Anfänger-Themen 1
D Caesar Chiffre Java Basics - Anfänger-Themen 2
L Caesar-Verschlüsselung programmieren Java Basics - Anfänger-Themen 12
G Caesar-Chiffre Java Basics - Anfänger-Themen 7
M Entschlüsselungsproblem (Caesar) Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben