Absolut unglaublich, ich bin am verzweifeln!

Status
Nicht offen für weitere Antworten.
A

Ahnungsloser

Gast
Hallo, ich habe folgendes Problem.
Ich habe eine Methode zum chiffrieren geschrieben.
Ich übergebe dieser methode einmal einen String aus einer Datei.
Ein anderes mal einen selbstdefinierten, der aber exakt den selben Inhalt und die selbe Länge hat!
Nur reagiert die methode unterschiedlich auf beide Stringobjekte:

Code:
		CBMP stega = new CBMP(); // eigene Klasse, hier unwichtig
		String absolutdata; 
		String message = CFile.readfile(CFile.dfilelocation, stega); // liest wie gesagt eine Datei aus
		
		System.out.println(message);
		String stringobject="Hallo!! ...Wie gehts?";
                                System.out.println(stringobject);
		System.out.println(message.length() + " " + stringobject.length());
		CCrypt crypt = new CCrypt(absolutdata);
		crypt.setkey(false);
		absolutdata = message;
		crypt.data = absolutdata;
		String newd;
		System.out.println("The cryptkey: " + crypt.currkey);
		newd = crypt.Vigenere(); // die Methode zum chiffrieren

Folgende Ausgabe erscheint:
Hallo!! ...Wie gehts?
Hallo!! ...Wie gehts?
40 40
The cryptkey: defaultkey

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 65534
at CCrypt.Vigenere(CCrypt.java:147)
at CBase.main(CBase.java:147)

So, wenn ich jetzt aber an der Stelle
absolutdata = message;
dass hier einsetze:
absolutdata = stringobject;

Dann funktioniert alles Prima, ohne Exception. An der Chiffriermethode kann es nicht liegen, die habe ich so oft getestet. Irgendwie muss es da ein anderes Problem geben, doch das erscheint mir absolut unlogisch!
Könnt ihr mir vllt. wieterhelfen?
 
A

Ahnungsloser

Gast
Endlich habe ich einen kleinen Anfang gefunden:

Wenn ich den Wert des letzten Chars von dem eingelesenem String ausgebe, erscheint das hier:
Bei (int)Char:
65535
bei (char)Char:
?
Offensichtlich hängt dem Dateileseprozess zusammen. Also sieht der String gleich aus, doch der letzte Buchstabe ist relativ eigenartig....
 
A

Ahnungsloser

Gast
Gut, ich habe die Lösung und möchte sie keinem vorenthalten:
Ich habe bei der Methode, die die Datei einliest einen fehler gemacht, nämlich folgenden:
Code:
do {
				inByte = buff.read();
				data += (char) inByte;
				counter++;
			} while(inByte!=-1);

Wie zu erkennen ist, wird nicht überprüft, wenn man der variable data den Wert von inByte hinzufügen möchte, ob inByte nicht -1 ist. Diese -1 wird als 65535 dem Stringobject angehangen, aber nicht mit angezeigt.
Daher war das ganze so verwirrend. Trotzdem danke.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben