Cäsar Verschlüsselung

Tiyen

Mitglied
Hallo zusammen,

ich bin gerade dabei einen Algorithmus für die Cäsar Verschlüsselung zu schreiben. Soweit so gut.. die Verschlüsselung um n funktioniert schon, nur heißt es in der Aufgabenstellung, wenn man nach n (also größer als 1) verschlüsseln möchte, soll das Programm bspw. bei einer Verschlüsselung um 3, aus einem "A" erst ein "B" und dann ein "C" machen. Mein Programm tut das zwar auch, nur schreibt es dann wenn man das Wort "Hallo" verschlüsseln möchte die Verschlüsselung dreimal hin, was nicht sein soll.
Könnt ihr mir da vllt weiterhelfen, oder einen kleinen Schubser geben. Also ich möchte keine komplette Lösung, sondern noch was dabei lernen :D

Java:
import java.util.*;

public class CäsarVerschlüsselung {

	public static void main(String args[]) {

		Scanner input = new Scanner(System.in);

		System.out.println("Bitte den Text zum verschlüsseln eingeben: ");
		String text = input.nextLine();

		String encode = ""; // Platzhalter für den verschlüsselten Text

		char großAlphabet[] = { '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', 'Ä', 'Ö', 'Ü' };

		char kleinAlphabet[] = { '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', 'ß', 'ä', 'ö', 'ü' };

		System.out.println("Bitte Verschlüsselung nach N eingeben: ");
		int key = input.nextInt();// Verschiebung um n Stellen
		input.close();
		int zähler = 0;

		while (zähler <= key) {
			for (int i = 0; i < text.length(); i++) {
				for (int j = 0; j < großAlphabet.length; j++) {
					if (text.charAt(i) == großAlphabet[j]) {
						encode = encode + großAlphabet[++j];

					} else if (text.charAt(i) == ' ') {
						encode += ' ';
						break;
					}
				}
				for (int k = 0; k < kleinAlphabet.length; k++) {
					if (text.charAt(i) == 'ß') {
						encode += 'ß';
						break;
					} else if (text.charAt(i) == kleinAlphabet[k]) {
						encode += kleinAlphabet[++k];
					}
				}
			}
			zähler++;
		}
		System.out.println("Codiert: " + encode);
	}
}

Grüße Tiyen
 
Zuletzt bearbeitet:

genodeftest

Erfahrenes Mitglied
ganz einfach: in Zeile 31, 34, 40 und 43 dieses Beispiels fügst du jeweils Buchstaben an den String 'encode' an. Du willst aber wahrscheinlich die Buchstaben ersetzen. Ich würde stattdessen den String Zeichen für Zeichen (d.h. als Array) verarbeiten.
 

Tiyen

Mitglied
Ok hab es jetzt hinbekommen mit einem Char Array. Eine Frage habe ich noch. Wie kann ich die Arrays für Groß-und Kleinbuchstaben zurücksetzen, wenn die Verschlüsselung nach n größer als die länge der beiden Arrays ist ?