Caesar-Verschlüsselung - Was stimmt nicht?

Heike_89

Mitglied
Ich will eine Caesar-Verschlüsselung machen, d.h. ich gebe einen String ein und dann sollen alle Buchstaben um eine bestimmte Anzahl verschoben werden.

Java:
import java.util.Scanner;    
	class caesar {
        public static void main (String [] args)
		{
            int key = 1;
            int index = 0;
            char c = 0;
            char verschluesselt;
            String alphabet = "abcdefghijklmnopqrstuvwxyz";
			Scanner input = new Scanner(System.in);
       
            System.out.print("Um wieviele Stellen soll verschoben werden: ");
            key = input.nextInt();             
           
     
            System.out.print("Zu codierenden Text eingeben: ");
     
            while (c != '\n') 
			{
                c = input.nextLine();
                if (c == '\n') 
				{
                    break;
                } 
				else 
				{
                    if (c == ' ') 
					{
                        System.out.print(" ");
                    } 
					else 
					{
						index = alphabet.indexOf(c);
						//index = index * (-1);
						verschluesselt = alphabet.charAt(index+key);
						System.out.print(verschluesselt);  
						//System.out.print(c);
						//System.out.print(index);               
                    }              
                    System.out.println("");
				}
			}
		}
    }

Zeile 20 funktioniert nicht. Habe es auch schon mit c = Input.readCharSequence (); versucht, geht aber auch nicht. Es meldet, required: char, found: String. Wie bekomme ich das weg?
 
Hallo 🙂

nextLine() liefert dir eine ganze Zeile, also eine Zeichenkette mit möglicherweise mehreren Buchstaben. Deine Variable c ist aber vom Typ char und kann deshalb nur einzelne Buchstaben speichern. Du könntest die Ausgabe von nextLine in einem String speichern und dann mit einer for-Schleife verschlüsseln, statt die while-Schleife zu verwenden. Dann musst du dich auch um das \n nicht kümmern 🙂
 
Zuletzt bearbeitet:
Ungefähr so:
Java:
System.out.print("Zu codierenden Text eingeben: ");
String eingabe = input.nextLine();
eingabe = input.nextLine();
        
char[] chars = eingabe.toCharArray();
for(int i = 0; i < chars.length; i++)
{
    if (chars[i] == ' ')
    {
        System.out.print(" ");
    }
    else
    {
        index = alphabet.indexOf(chars[i]);
        verschluesselt = alphabet.charAt(index+key);
        System.out.print(verschluesselt);
    }              
}
 

Zurück
Oben