Textverschlüsselung

robinski

Mitglied
Schreiben Sie ein einfaches Programm zur Textverschlüsselung. Dazu soll jeder Buchstabe einer Nachricht um einen fixen Wert n verschoben werden. Z.B. n=2 so wird A auf C verschoben.
Ziffern und Sonderzeichen werden nicht verschoben.

Soweit bin ich noch gekommen:

Java:
    public static void main(String[] args) {
       
        Scanner keyb = new Scanner(System.in);
        char array [] = new char [500];
        System.out.println("Verschlüsselungszahl eingeben: ");
        int n=keyb.nextInt();
        System.out.println("Text eingeben: ");
        char text = keyb.next().charAt(n);
        for(int i = 0; i < array.length; i++){
            if (Character.isUpperCase(i) ^ Character.isLowerCase(i)) {
                array[i] = array[i] +=n;       
                }       
           
        }
        System.out.println(text);
    }
    }
 

robinski

Mitglied
Die Frage ist, wo sind die Fehler? Gibt anscheinend mehrere. Eingabe und Schleife funktionieren nicht wie gedacht, weil als Ausgabe bekomme ich immer nur 1 Zeichen.
 

robinski

Mitglied
Ich weiß nicht was ich Falsch gemacht habe, aber das Programm funktioniert nicht so wie es eigentlich geplant war. Oben steht die Frage, darunter mein Code. Ich bin hier damit mir einer sagen kann wo der Fehler liegt, ich weiß es nämlich nicht. Wie gesagt nach der Eingabe gibt mir das Programm nur 1 Zeichen aus.
 

korbayy

Mitglied
Code:
array[i] = array[i] +=n;

was ist denn das ? was hast du da vor ? übernimmt der compiler das überhaupt ? :D

kleiner tipp : wenn du versuchst code zu posten dann benenn deine variablen aussagekräftig
 

VfL_Freak

Top Contributor
Java:
public static void main(String[] args)
{
    Scanner keyb = new Scanner(System.in);
    char array [] = new char [500];
    System.out.println("Verschlüsselungszahl eingeben: ");
    int n=keyb.nextInt();
    System.out.println("Text eingeben: ");
    char text = keyb.next().charAt(n);
    for( int i = 0; i < array.length; i++ )
    {
        if( Character.isUpperCase(i) ^ Character.isLowerCase(i) )  // (1)
        {
             array[i] = array[i] +=n;    // (2)  
        }      
    } // for
    System.out.println(text); // (3)
} // end of main
} // ?? end of class ??

zu (1) Was soll hier das Caret?? Wenn Du 'verodern' willst, dann bitte mit '||' !!
zu (2) das ist in der Tat Blödsinn und wird sich nicht compilieren lassen!! Oder hast Du da was Falsches gepostet??
zu (3) 'text' ist immer das n-te Zeichen der Eingabe und wird innnerhalb Deiner for-Schleife nie verändert !!

Gruß Klaus
 

Harry Kane

Top Contributor
Ist dein Problem jetzt gelöst?
Falls nicht: du liest den übergebenen String nicht ein, sondern nur den n-ten character des übergebenen Strings.
Edit: zu langsam
 

robinski

Mitglied
Ja alle kleine Macken gelöst, trotzdem bekomme ich nicht hin das nur jeder Buchstabe im Text um "n" verschoben wird.

Java:
String text = keyb.next();
        char [] carr = text.toCharArray();
        for(int i = 0; i < array.length; i++){

jetzt würde ich anschließend eine if Bedingung hinsetzen z.B. isUpperCase, is LowerCase um zu überprüfen ob es sich überhaupt um ein Buchstabe handelt, das funktioniert aber nicht mit arrays. Wie dann? Und die Verschiebung könnte dann so aussehen
Java:
 array[i]=array[i+n] ?
 

korbayy

Mitglied
1)Dein char text muss zu einem String text umgewandelt werden.
2)Danach solltest du deinen Text in das charArray speicher mit
Code:
charArray = text.toCharArray();
3) Um einen char nun von zB "A" zu "N" zu machen kannst du nicht schreiben
Code:
array=array[i+n]?
. Überleg doch was du mit diesem code machen würdest. ZB dein wort wär "HALLO" , mit deinem code würdest du bei n=1 das hier machen : "ALLOO"
4) um das array auszugeben reicht nicht nur ein System.out.Println(charArray), da es dir so die speicheradresse des arrays zurückgibt (@(randomzahlen)).

Code:
    for(int i = 0; i < charArray.length; i++){
            System.out.print(charArray[i]);
        }
Damit gibst du das verschobene Wort aus
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Textverschlüsselung Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben