Syntax error

Butze

Mitglied
Hallo zusammen,

Ich muss von der Uni aus ein Programm schreiben das einen Text mit dem Vigenère-Schlüssel verschlüsselt.
Polyalphabetische Substitution ? Wikipedia

Soweit so gut. Nun habe ich aber das Problem das mir Java immer diese Fehlermeldung ausspuckt:
Syntax error on token ",", invalid AssignmentOperator Vigenere.java (das Komma in der for-schleife hinter dem i ist gemeint)

und ich ehrlich gesagt nicht genau weiß was ich jetzt ändern muss damit es läuft. Hier mein Code:

Java:
import java.util.Scanner;


public class Vigenere
{
public static String vigenere(String klartext, String passwort)
{
String verschlüsselung = "";

for (int i = 0, j = 0; i < klartext.length(); i, j)
{
if(j == passwort.length()) j = 0; 

if ((klartext.charAt(i) > 64) && (klartext.charAt(i) < 91))
{
verschlüsselung += (char) ((klartext.charAt(i)+ passwort.charAt(j)-130) % 26 + 65);
}
else if ((klartext.charAt(i) > 96) && (klartext.charAt(i) < 123))
{
verschlüsselung += (char) ((klartext.charAt(i)+ passwort.charAt(j)-162) % 26 + 97);
}
else verschlüsselung += (char) klartext.charAt(i);
//else verschlüsselung += (char) #;

}
return verschlüsselung;
}

public static void main(String[] args)
{
// String klartext = "Dieser Satz enthält 2 geheime Informationen!";
// String passwort = "JAVA";
Scanner sc = new Scanner(System.in);

System.out.println("Bitte Klartext eingeben:");
String klartext= sc.next();
System.out.println("Bitte Passwort eingeben:");
String passwort= sc.next();

System.out.println("Der verschlüsselte Text lautet:");
System.out.println(vigenere(klartext, passwort));
}
}

Ich hoffe es kann mir hier geholfen werden =)
Gruß Butze
 
ohne Sinnhaftigkeit überprüft zu haben, erwartet die For-Schleife eine Anweisung, was mit den Zählindexen gemacht werden soll...ich habe sie mal inkrementiert...

Java:
import java.util.Scanner;

public class Vigenere {
	public static String vigenere(String klartext, String passwort) {
		String verschlüsselung = "";

		for (int i = 0, j = 0; i < klartext.length(); i++, j++) {
			if (j == passwort.length())
				j = 0;

			if ((klartext.charAt(i) > 64) && (klartext.charAt(i) < 91)) {
				verschlüsselung += (char) ((klartext.charAt(i)
						+ passwort.charAt(j) - 130) % 26 + 65);
			} else if ((klartext.charAt(i) > 96) && (klartext.charAt(i) < 123)) {
				verschlüsselung += (char) ((klartext.charAt(i)
						+ passwort.charAt(j) - 162) % 26 + 97);
			} else
				verschlüsselung += (char) klartext.charAt(i);
			// else verschlüsselung += (char) #;

		}
		return verschlüsselung;
	}

	public static void main(String[] args) {
		// String klartext = "Dieser Satz enthält 2 geheime Informationen!";
		// String passwort = "JAVA";
		Scanner sc = new Scanner(System.in);

		System.out.println("Bitte Klartext eingeben:");
		String klartext = sc.next();
		System.out.println("Bitte Passwort eingeben:");
		String passwort = sc.next();

		System.out.println("Der verschlüsselte Text lautet:");
		System.out.println(vigenere(klartext, passwort));
	}
}
 
Danke für die schnelle Antwort =). Jetzt klappt es zumindest dahingehend das es verschlüsselt. Aber leider klappt das nur bei einem einzelnen Wort. Wenn ich z.B. einen ganzen Satz eingebe überspringt er das eingeben des "Geheimwortes" zum verschlüsseln und haut mir gleich etwas raus, was aber nicht stimmen kann :/...zum verzweifeln^^. Falls mir jemand dabei auch noch helfen mag/kann: Das Programm soll einem, nach dem Ausführen, nach einem Text fragen und wenn man den eingegeben hat soll es nach dem "Geheimwort" fragen um den Text danach zu verschlüsseln und dann den verschlüsselten Text ausgeben.

Gruß Butze

PS: Benutzt du eine Oberfläche die alles gleich ein wenig ansehnlicher einrückt oder hast du das eben selbst gemacht?
 
Butze hat gesagt.:
Aber leider klappt das nur bei einem einzelnen Wort. Wenn ich z.B. einen ganzen Satz eingebe überspringt er das eingeben des "Geheimwortes" zum verschlüsseln und haut mir gleich etwas raus, was aber nicht stimmen kann :/...zum verzweifeln^^.
Das wird an dem Delimiter Deines Scanners liegen. Der Scanner muss ja anhand von irgendwas die Werte auseinanderschneiden. Dafür orientiert er sich offensichtlich an Leerzeichen. Wenn du also:
Java:
 System.out.println("Bitte Klartext eingeben:");
        String klartext = sc.next();
        System.out.println("Bitte Passwort eingeben:");
        String passwort = sc.next();
machst, liest er die erste Eingabe in klartext mittelst des Aufrufes von next() ein, dann sieht er ein Leerzeichen als Trenner und das nächste next() liest dementsprechend die nächste eingabe in Passwort ein.

Schau Dir mal die Methode "useDelimiter()" (bzw. erstmal delimiter() zur Ausgabe des Delimiters) der Klasse Scanner an: Scanner (Java Platform SE 7 )
 
Zuletzt bearbeitet von einem Moderator:
jo, wie ARadauer schon sagt, so formatiert man Quelltexte...dann lässt es sich einfacher lesen.

Anstelle der [c]next()[/c]-Methode des Scanners, benutze mal lieber [c]String klartext = sc.nextLine();[/c], dann liest er den Klartext bis zum nutzen eines "Returns", bzw. eines anderen Zeilenumbruchs ein.
 

Zurück
Oben