Cäser Chiffrierung

Uzi88

Mitglied
hi ich versuche grad den Cäser code hin zu bekommen, das ist die Aufgabe:
http://puu.sh/6e6SW.png

und des mein Code

Java:
import java.util.Scanner;


public class Aufgabe47 {

	/** Kleine Konsolenanwendung, um den Caesar-Chiffrierer auszuprobieren
	 *  Zuerst wird der Schlüssel festgelegt, dann können wiederholt Texte eingegeben
	 *  und ver- oder entschlüsselt werden.
	 */
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);

		System.out.println("Schlüssel für Caesar-Chiffrierung wählen (1-25):");
		System.out.print("?> ");
		
		int schlüssel = Integer.parseInt(in.nextLine());

		// Objekt erzeugen für Chiffrierer/Dechiffrierer mit dem gewählten Schlüssel 
		CaesarChiffrierer caesar = new CaesarChiffrierer(schlüssel);

		boolean fertig = false;

		do {
			//Auswählen ob der Text verschlüsselt oder entschlüsselt werden soll
			System.out.println("Auswahl:");
			System.out.println(" v  verschlüsseln");
			System.out.println(" e  entschlüsseln");
			System.out.println(" x  Ende");
			System.out.print("?> ");
			
			String wahl = in.nextLine();
			if (wahl.charAt(0) == 'v') {
				//Text verschlüsseln und ausgeben
				System.out.print("Klartext: > ");
				String text = in.nextLine();
				String geheimtext = caesar.verschlüsseln(text);
				System.out.println("Geheimtext: " + geheimtext);

			} else if (wahl.charAt(0) == 'e') {
				//Text entschlüsseln und ausgeben
				System.out.print("Geheimtext:> ");
				String text = in.nextLine();
				String klartext = caesar.entschlüsseln(text);
				System.out.println("Klartext:    " + klartext);
			} else if (wahl.charAt(0) == 'x') {
				//Beenden
				fertig = true;
			} else {
				System.out
						.println("# unzulässige Wahl - nur 'v' oder 'e' erlaubt #");
			}
			System.out.println();

		} while (!fertig);

		System.out.println("- Ende -");

	}

}

Java:
public class CaesarChiffrierer {
	
	public String crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	//Public String convert(); 
	
	private String geheimtext;

	public CaesarChiffrierer(int schlüssel){
		//Schlüssel wird festgelegt

	}
	
	public String verschlüsseln(String klartext){
		//Verschlüsselt den Text
		StringBuilder sb = new StringBuilder(geheimtext.length());
		for(int i = 0; i < geheimtext.length(); i++) {
			int pos = crypt.indexOf(geheimtext.charAt(i));
			if(pos == -1)
				sb.append(" ");
			else
				sb.append(crypt.charAt ( (pos-3+26) %26) );
		}
		return  sb.toString();
	}
	
	public String entschlüsseln(String geheimtext){
		//Entschlüsselt den Text
		StringBuilder sb = new StringBuilder(geheimtext.length());
		for(int i = 0; i < geheimtext.length(); i++) {
            int pos = crypt.indexOf(geheimtext.charAt(i));
            if (pos == -1)
                sb.append(" ");
            else
                sb.append(crypt.charAt((pos+3)%26));
		}
		return sb.toString();
	}
}

so es scheint ja alles Richtig zu sein, glaube ich :D
aber wenn ich es durlaufen lasse passiert dieser fehler:
http://puu.sh/6e6Zb.png

kann mir jemand helfen? ich arbeite mit java Eclipse falls das ne rolle spielt
 

Ruzmanz

Top Contributor
Deine Instanzvariable geheimtext ist immer null. Die änderst du nie. Deshalb kannst du auch kein geheimtext.length() aufrufen.

PS: Es könnte auch sein, dass du in deiner verschlüsseln-Methode "klartext" anstatt geheimtext schreiben wolltest.
 
Zuletzt bearbeitet:

Uzi88

Mitglied
irgendwie komme ich nicht drauf, wie muss ich die den ändern damit sie nicht null ist?

P.s. Ja hattest recht habe es grad geändert
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben