Cäsar String Manipulation/Array in Java

DerEchteChickenWing

Neues Mitglied
Implementieren Sie eine statische-public Methode mit dem Namen "encodeCaesar" in der Klasse "Functionality.java", welche einen Text mithilfe der Cäsar-Veschlüsselung chiffriert.

Signatur: encodeCaesar(String s, int val) : String

Die Methode bekommt als Eingabeparameter einen String-Wert und einen Integer-Wert. Die Buchstaben (Character) aus dem String-Wert sollen um den Integer-Wert verschoben werden.
Der einfachheitshalber können Sie davon ausgehen, dass nur Buchstaben und keine Leer-, Ziffer- oder Sonderzeichen vorhanden sind.
Der String-Wert soll in Kleinbuchstaben umgewandelt werden, bevor die Verschlüsselung durchgeführt wird.

Die Methode soll wieder einen String zurückgeben, bei dem jeder Buchstabe entsprechend des angebenen Integer-Wertes verschoben wurde.
Beispiel: encodeCaesar("Ac",3) gibt "df" zurück.
Wenn der mitgegebene Integer-Wert kleiner als 0 oder größer als 26 ist, soll ein leerer String zurückgegeben werden.

Verwenden Sie in Ihrer Lösung String-Manipulationen und Character-Arrays (char[]).
Die Verwendung von externen Bibliotheken oder anderen Inhalten, die noch nicht in dieser Veranstaltung behandelt wurden, sind untersagt.

Hinweis:
Der größte ASCII-Wert eines Kleinbuchstabens ist 'z' = 122. Wenn man durch Verschiebung über diesen Wert kommt, fängt man von vorne beim 'a' wieder an.

Mein Code bisjetzt:

public static String caesar(String s, int val) {
char[] newString = s.toCharArray();
for(int i = 0; i < s.length(); i++){
int newChar = newString+val;
while(newChar > 65+26) // 65 = A, 26 = number of letters in the alphabet
newChar -= 26;

newString = (char) (newChar);

Danach komme ich nicht weiter
 

DerEchteChickenWing

Neues Mitglied
Java:
 public static String caesar(String s, int val) {
            char[] newString = s.toCharArray();
            for(int i = 0; i < s.length(); i++){
                int newChar = newString[i]+val;
                while(newChar > 65+26) // 65 = A, 26 = number of letters in the alphabet
                    newChar -= 26;

                newString[i] = (char) (newChar);
 

Mat

Aktives Mitglied
Denk auch daran:
Der String-Wert soll in Kleinbuchstaben umgewandelt werden, bevor die Verschlüsselung durchgeführt wird.

Im Moment arbeitest du glaube ich nur mit Großbuchstaben. Such dir mal eine ASCII-Tabelle raus.. A-Z: 65-90 und a-z: 97-122

Hier kannst du die erwarteten Ergebnisse anschauen und durchprobieren:

Verwenden Sie in Ihrer Lösung String-Manipulationen und Character-Arrays (char[]).
Die Verwendung von externen Bibliotheken oder anderen Inhalten, die noch nicht in dieser Veranstaltung behandelt wurden, sind untersagt.

Heißt das, ihr dürft Sachen wie s.toLowerCase() benutzen? Wenn nicht, musst du das numerisch transformieren.

Der Modulo-Operator (x % 26) kann hier auch nützlich sein
 
Oben Unten