Ich schreibe gerade ein Programm, dass eine vom Caesar-Verschlüsselungssystem verschlüsselte Datei bekommt und diese automatisch selber entschlüsselt. Die Schlüsselzahl ist dabei am Anfang nicht dabei, das Programm muss diesen also selber finden.
Ich hab den Programm Code fertig, jedoch ist es irgendwie nicht in der Lage den Schlüssel zu finde und ich verstehe einfach nicht warum.
Der Fehler liegt irgendwo zwischen Zeile 48 und 66, weil die Variable
char amOftestenVorkommenderChar = ' ';, die ich global deklariert habe, nicht verändert aus der for-Schleife rauskommt. Ich verstehe aber nicht warum...
Ich hoffe jemand kann mir weiter helfen, sitze schon 2 Stunden vor dem Code und versuche den Fehler zu finden...
Der Code ist etwas lang, also wie gesagt: Das Problem liegt denke ich zwischen Zeile 48 und 66 (Bei den zwei for-Schleifen).
Habe auch Kommentare dazu geschrieben, damit es vllt etwas einfacher nachzuvollziehen ist.
Ich hab den Programm Code fertig, jedoch ist es irgendwie nicht in der Lage den Schlüssel zu finde und ich verstehe einfach nicht warum.
Der Fehler liegt irgendwo zwischen Zeile 48 und 66, weil die Variable
char amOftestenVorkommenderChar = ' ';, die ich global deklariert habe, nicht verändert aus der for-Schleife rauskommt. Ich verstehe aber nicht warum...
Ich hoffe jemand kann mir weiter helfen, sitze schon 2 Stunden vor dem Code und versuche den Fehler zu finden...
Der Code ist etwas lang, also wie gesagt: Das Problem liegt denke ich zwischen Zeile 48 und 66 (Bei den zwei for-Schleifen).
Habe auch Kommentare dazu geschrieben, damit es vllt etwas einfacher nachzuvollziehen ist.
Java:
import java.io.*;
public class Decode {
public static void main(String[] args) {
/*Programm soll nun ausgeführt werden,
wenn die Namend er zu entschlüsselnden Datei
und der neuen entschlüsselten Datei drinnen sind*/
if (args.length == 2) {
File verschlüsselteDatei = new File(args[0]);
File entschlüsselteDatei = new File(args[1]);
try {
FileReader lesen = new FileReader(verschlüsselteDatei);
FileWriter schreiben = new FileWriter(entschlüsselteDatei);
int gelesenerChar = lesen.read();
int gelesenerChar2 = gelesenerChar;
int anzahlDerZeichen = 0;
/*
* anzahl der zeivhen in der datei, damit ich weiss, wie gross
* ich später das array machen muss, wo ich dann den text aus der datei reinkopiere
*/
while (gelesenerChar2 != -1) {
anzahlDerZeichen++;
gelesenerChar2 = lesen.read();
;
}
System.out.println("Anzahl der Zeichen der Datei: " + anzahlDerZeichen);
char[] buffer = new char[anzahlDerZeichen];
// die datei wird in das char array buffer gespeichert/kopiert
while (gelesenerChar != -1) {
lesen.read(buffer);
gelesenerChar = lesen.read();
}
int current = 0;
/*
* //Eig. wollte ich die Variable "amOftestenVorkommenderChar" nur deklarieren aber das geht nicht
* weil, ich dann später in Zeile 48 ein Fehler bekomme.
* Deswegen als "Platzhalter" irgendein char reingeschrieben, da
* es in der if bdeingung später eh verändert werden MÜSSTE
*/
char amOftestenVorkommenderChar = ' ';
//Hie soll der am am öftesten vorkommende char gefunden werden
for (int i = 0; i < buffer.length; i++) { //
int buchstabenVorkommensCounter = 0;
for (int j = 1; j < buffer.length; j++) {
if (buffer[i] == buffer[j]) {
buchstabenVorkommensCounter++;
}
}
if (buchstabenVorkommensCounter > current) {
current = buchstabenVorkommensCounter;
amOftestenVorkommenderChar = buffer[i];
System.out.println("buffer[i] ist: " + buffer[i]);
System.out.println("Am oftesten vorkommender Char ist: " + amOftestenVorkommenderChar);
}
}
//Hier soll letztendlich der Die Textdatei entschlüsselt und in eine neue Datei gespeichert werden
System.out.println("current " + current);
int schlüssel = 'e' - amOftestenVorkommenderChar;
System.out.println("Schlüssel is: " + (char) schlüssel);
for (int i = 0; i < buffer.length; i++) {
schreiben.write((char) (buffer[i] + schlüssel));
}
lesen.close();
schreiben.close();
} catch (FileNotFoundException e) {
System.out.println("Die Datei konnte nicht gefunden werden ");
} catch (IOException e) {
System.out.println("Es ist ein Fehler beim Lesen oder Schreiben der Date aufgetreten ");
}
} else {
System.err.println("Das args Array beinhaltet nicht die zwei benötigten Elemente ");
}
}
}