Cäser Verschlüsselung

nuke87

Mitglied
Hallo Leute , brauche eure Hilfe.
Ich muss eine Cäser Verschlüsselung machen. Es Muss ganz einfach sein wie es nur geht.
Zunächst muss eine Zahl eingegeben werden die zeigt um wie viel stellen der eingegebene Buchstabe verschoben wird. Dann muss der Buchstabe eingegeben werden, ja und dann wir der verschlüsselte Buchstabe angezeigt.
Klingt ganz einfach, aber irgendwie habe ich Probleme mit der if Anweisung.
Ach ja noch was, verschlüsselter Buchstabe muss als Großbuchstabe angezeigt werden.

hier mein code der nicht so funktioniert
Java:
import java.util.*;

public class Caeser{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

       
       
        int verschiebung = sc.nextInt();
        String s1 = sc.next();
        char verschluesseln = s1.charAt(0);

        if (verschluesseln >= 'A' && verschluesseln <= 'Z') {
            return ((verschluesseln - 'A' + verschiebung)%26 +'A');
           
        }

        sc.close();

       
           




    }
}
 
N

neoexpert

Gast
Du musst nicht prüfen, ob das Zeichen im gewissem Bereich liegt. Einfach deine Zahl auf das Zeichen darauf addieren.
 
N

neoexpert

Gast
Java:
char c='X';
        System.out.println("Verschlüsselt:"+(c+=5));
        System.out.println("Entschlüsselt"+(c-=5));
 
N

neoexpert

Gast
Wenn du 'x' hast möchtest du auf einen grossen Buchstaben abbilden? Warum? Was passiert mit grossen Buchstaben des klartextres? Und mit Satzzeichen?
 

nuke87

Mitglied
Hier die Aufgabenstellung, vielleicht habe ich mich nicht so ausgedrückt


Eine einfache und alte Verschlüsselungmethode für Texte ist die Caesar-Verschlüsselung. Ausgangspunkt ist ein Buch- stabe b und ein Schlüssel k ∈ N. Das Verfahren arbeitet so, dass der Buchstabe durch den Buchstaben ersetzt wird, der k Buchstaben weiter im Alphabet erscheint. Dabei ist zu beachten, dass beim “Hinauslaufen“ über Z mit A weiter gezählt wird. Der nächste Buchstabe nach Z ist also A. Beispiel: b = H und k = 1 ergibt als Ergebnis I.

Schreiben Sie ein Java-Programm Caesar, das für einen Schlüssel k mit k ∈ N (also z.B. k = 100) und einen Großbuchsta- ben b den verschlüsselten Großbuchstaben auf dem Bildschirm ausgibt. Die beiden Argumente werden über die Tastatur dem Programm übergeben, zuerst der Schlüssel k in einer Zeile und anschließend der Buchstabe b in einer Zeile.

Die Ausgabe besteht nur aus dem kodierten Resultatbuchstaben zu Beginn der Ausgabezeile gefolgt von einem Zeilenumbruch.

Beispiel: Für die Eingabe

5 X

ist die Ausgabe
C
 
N

neoexpert

Gast
Guck dir das mal an:

Java:
import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
        char c='a';
        int key=5;
        for(int i=0;i<100;i++,c++)
            System.out.println("klar:"+c+";verchlüsselt:"+(char)(c+key));
      
    }
}
 
N

neoexpert

Gast
Der Buchstabe A hat den wert 65:
Java:
char c='A';
System.out.println((int)c);
 
N

neoexpert

Gast
Dein program möchte ja ausser dem einen Wert zurückzugeben in einer Funktion die keinen Rückgabe-wert hat (void main)
 
N

neoexpert

Gast
Java:
import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);



        int verschiebung = sc.nextInt();
        //String s1 = sc.next();
       // char verschluesseln = s1.charAt(0);
        while (true)
        {
            String s1 = sc.next();
            char verschluesseln = s1.charAt(0);
           
            if (verschluesseln >= 'A' && verschluesseln <= 'Z')
            {
                System.out.println((char)((verschluesseln - 'A' + verschiebung) % 26 + 'A'));

            }
        }

        //  sc.close();







    }
}
 

nuke87

Mitglied
Habe jetzt while weggemacht, es geht , aber nach der Eingabe von der verschiebung und verschluesseln schliesst das Programm direkt ohne Ausgabe. bitte bitte leute hilft mir.

Java:
import java.util.*;

public class Caeser
{

    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);

        int verschiebung = sc.nextInt();

            String s1 = sc.next();
            char verschluesseln = s1.charAt(0);


            if (verschluesseln >= 'A' && verschluesseln <= 'Z')
            {
                System.out.println((char)((verschluesseln - 'A' + verschiebung)% 26 + 'A'));
            }
       
        sc.close();
       
    }
}
 
N

neoexpert

Gast
Vllt Benutzt er Windows Terminal der direkt nach der Eingabe geschlossen wird oder so...
Da muss du dann nochmal etwas einlesen vor dem ende.
 

Cromewell

Top Contributor
Ich habe damals auch mal so etwas geschrieben (ändert aber nur reine Buchstaben, also ohne Sonderzeichen). Du kannst es dir ja mal anschauen:
Java:
private String encrypt(String text, int shift){
  
    StringBuilder result = new StringBuilder();

    for (int i = 0; i < text.length(); i++){
        char c = text.charAt(i);
        int pos = (int) c;
        if(c >= 'a' && c <= 'z'){
            pos = (pos - 'a' + shift)%26 + 'a';
            c = (char) pos;
            result.append(c);
        }else if(c >= 'A' && c <= 'Z'){
            pos =  (pos - 'A' + shift)%26 + 'A';
            c = (char) pos;
            result.append(c);
        }else if(c == ' '){
            result.append(' ');
        } else {
            output.setText("Wrong input."); //Das ist egal (ändert den Text in einer TextArea...)
        }
    }
    return result.toString();
}
 

Neue Themen


Oben