Caesar Chiffre

Status
Nicht offen für weitere Antworten.

Dissmaster

Mitglied
Hallo,

habe hier einen Caesar Chiffre Code. Habe aber Probleme mit dem Code.
Code:
public class Caesar {

    public String verschluessele(int key, String wort) {
    char abc[] = {
        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
        'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
        'x', 'y', 'z'}; //Array mit dem Alphabet

    String ergebnis = ""; //Ergebnis initialisieren

    int a,k;
    for (int i = 0; i < wort.length(); i++) { //Wort durchlaufen
      char c = Character.toLowerCase(wort.charAt(i)); 
      for (a = 0; a < abc.length && c != abc[a]; a++);
      if(a >= abc.length) {
        ergebnis += c;
      } 
    else {
        k = ( (a + key) % 26);
        ergebnis += abc[k];       
}
    }

    return (ergebnis);
  }
   public String entschluessele(int key, String wort) {
    return this.verschluessele(-key, wort);
  }
}
Und zwar ist mir nicht genau klar wofür ich bei der 2. for Schleife das c != abc[a]; a++ brauche. Und bei der 2. Methode entschluessele, bekomme ich eine Fehlermeldung Index Out of Bounds, da der Key negativ ist, was kann ich dagegen tun???
 
Ohne jetzt besserwisserisch wirken zu wollen: Schreib' das ganze doch mal selbst (denn ich gehe davon aus, das genau das deine Aufgabe ist). Es noch 100 andere Möglichkeiten, wie man das implementieren kann, und bei den meisten davon wird kein "c != abc[a]" vorkommen...
 
Auch wenn er es selber machen soll:

kleiner Hinweis:
(char)(aChar+chifre)

Jetzt musst du nur noch Sonderzeichen abfangen, gucken was bei 'z' passiert, kleine und grosse Buchstaben abgrenzen.

noch ein Hinweis:
stell dir das ABC auf einer Scheibe (rund) vor...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben