# Cäsar Aufgabe



## Leoniee (1. Jun 2012)

Hallo, ich weiß, dass dies schon oft hier im forum gefragt wurde, aber ich kann das nicht auf meine Aufgabe übersetzen. bin im ersten Semester und wir haben letzte woche mit Java Angefangen und ich komme absolut nicht klar im Moment, über hilfe würd ich mich sehr freuen.

Die Maske hier wurde so gegeben ich muss nur den richtigen code einfügen, aber alles was ich bisher versuchte war falsch, ich bin echt am verzweifeln. 

Es sind folgende 2 Klassen gegeben:



```
package prog2.project1.hellojava;


/**
 * Dieses Interface spezifiziert die Caesar-VerschlÃ¼sselung mit beliebigem
 * Schift {@code shift}. Dabei wird jedes Zeichen im Alphabet durch das ersetzt, dass {@code shift}
 * Stellen weiter steht. Am Ende des Alphabets wird von vorne weitergezÃ¤hlt.
 * 
 * Weitere ErlÃ¤uterung und Implementierungsdetails auf <a href=
 * 'https://de.wikipedia.org/wiki/Caesar-Verschl%C3%BCsselung'>Wikipedia</a>
 * 
 */


public interface CaesarCipher {

    /**
     * Diese Method verschlÃ¼sselt den Klartext {@code plainText}, in dem sie jeden Buchstaben
     * durch den ersetzt, der {@code shift} Stellen weiter im Alphabet
     * steht.
     * 
     * @param plainText
     *            Der zu verschlÃ¼sselnde Text. Darf nur die Zeichen a-z und A-Z
     *            enthalten und darf nicht {@code null} sein.
     * @param shift
     *            Die Anzahl der Positionen um die geschiftet wird.
     * @return Den verschlÃ¼sselten Text.
     */
    public String encrypt(String plainText, int shift);

    /**
     * Diese Methode entschlÃ¼sselt einen Geheimtext.
     * 
     * @param encryptedText
     *            Der zu entschlÃ¼sselnde Text. Darf nur die Zeichen a-z und A-Z
     *            enthalten und darf nicht {@code null} sein.
     * @param shift
     *            Die Anzahl der Positionen um die beim VerschlÃ¼sseln geschiftet
     *            wurde.
     * @return Den entschlÃ¼sselten Text.
     */
    public String decrypt(String encryptedText, int shift);

}
```


und diese hier:


```
package prog2.project1.hellojava;


/**
 * Diese Klasse implementiert die Caesar-VerschlÃ¼sselung.
 */

public class CaesarCipherImpl implements CaesarCipher {
	
	public String encrypt(String plainText, int shift) {
		//TODO Implementieren Sie diese Methode.
		throw new UnsupportedOperationException("Noch nicht implementiert.");
	}
	
	public String decrypt(String encryptedText, int shift) {
		//TODO Implementieren Sie diese Methode.
		throw new UnsupportedOperationException("Noch nicht implementiert.");
	}

}
```


----------



## Volvagia (1. Jun 2012)

Was hast du denn bis jetzt versucht?


----------



## SlaterB (1. Jun 2012)

Cäsar für sich ist ein gewisser Fachbegriff, insbesondere eine typische Uni-Aufgabe, was es hier als Thementitel besonders markant macht
Caesar-Verschlüsselung ? Wikipedia
aber deine durch Code genannten Methoden haben damit nichts zu tun, wie kommst du zu diesem Thementitel?

drei unabhängige Dinge gleichzeitig zu fragen ist auch nicht allzu sinnvoll, kannst dann ja zumindest eins davon als erstes aussuchen..

ggT findet man in Sekunden 30x in Java perfekt implementiert mit 'ggt java' usw. in Suchmaschinen,
den Rest quasi auch, soweit bekannt/ noch andere Fragen dazu?

wie dein Uni-Stand  ist ist übrigens recht egal, 
du kannst jederzeit mit einem Lehrbuch von 0 anfangen und diese Aufgaben ca. nach 1-2 Wochen bearbeiten


----------



## Leoniee (1. Jun 2012)

hey, srry habe es grade korrigiert. Habe mich in der Datei verklickt, jetzt stimmt der code oben. Ich habe schon viel versucht, aber andauernd kriege ich Fehler raus, fühl mich einfach grad total überfordert, habe mich schon 3 tage in "java ist auch nur eine insel reingelesen" aber die aufgabe ist mir zu komplex zum fassen.:bahnhof:


----------



## SlaterB (1. Jun 2012)

nun also Cäsar,
immer noch allerdings per Suchmaschine oder hier im Forum gut zu finden 
http://www.java-forum.org/hausaufgaben/97350-caesar-verschluesselung.html

Lösungen gibts bereits, begleitet gar durch 3 Seiten Text wäre vielleicht schön, aber nicht ganz realistisch,
eine spezielle Frage stellst du nicht, was könnte da bloß noch weiter zu sagen sein?
na vielleicht reicht der Link..


----------



## Volvagia (1. Jun 2012)

Da steht noch immer nicht, was du versucht hast.
Ich würde zuerst eine private Methode mit der Signatur String shift((String input | char[] input), int steps) definieren. encrypt ruft shift mit 3 auf, decrypt mit (Untersützte Zeichen - 3). Ich nehme an das ist 26 - 3.

Dann erstelle eine Liste was gemacht werden muss:


```
String zu Char-Array (Strings sind immuntable)
Eine for, die jeden Char durchgeht und in dessen Inhalt verarbeitet wird.
	Ein trinärer Operator, der c - steps nimmt sofern c - steps >= 'a'/'A' ist oder c + (Unterstützte Zeichen) - steps
Das Zusammenfügen zu einen String (valueOf)
Die Rückgabe.
```

Bei c + Unterstüzte Zeichen bin ich mir nicht ganz sicher, vielleicht ist es auch - oder + 1. Aber das kannst du ja ausprobieren.


----------



## Leoniee (1. Jun 2012)

Danke habs dank Volvagia hinbekommen
=)


----------

