P7, TestEncoding, bitlength

Benutzeravatar
Wang Tang
Mausschubser
Mausschubser
Beiträge: 92
Registriert: 5. Dez 2006 17:57

P7, TestEncoding, bitlength

Beitrag von Wang Tang »

Code: Alles auswählen

Testcase: testSimple took 0.026 sec
  FAILED
Your bitlength differs from the optimium (you: 22 optimum: 20)
junit.framework.AssertionFailedError: Your bitlength differs from the optimium (you: 22 optimum: 20)
  at TestEncoding.fileTest(TestEncoding.java:33)
  at TestEncoding.testSimple(TestEncoding.java:44)
Der einzige Test, bei dem er wegen der Bitlänge meckert. Und ich habe absolut keine Ahnung wo der verdammte Fehler sein soll. Kann ja nur beim Erstellen des Huffman-Baums oder beim Erstellen der Bitfolgen passieren. Dort finde ich aber keinen Fehler..

Hatte jemand den selben Fehler und kann mir evtl. einen Tip geben, wie habt ihr den weggekriegt, worans lags bei euch?

Benutzeravatar
Wang Tang
Mausschubser
Mausschubser
Beiträge: 92
Registriert: 5. Dez 2006 17:57

Beitrag von Wang Tang »

puh, bin schon selten dumm..
Aus Debug-Zwecken bei der frequency was geändert -> falscher Baum -> falsche Bitlänge.

Benutzeravatar
corn
Ehemalige Fachschaftler
Beiträge: 28
Registriert: 17. Okt 2004 19:08
Wohnort: Groß-Umstadt
Kontaktdaten:

Beitrag von corn »

Der Simple Test lehnt sich an die Beispielen aus dem Folien an... Einfach mal auf ein Blatt Papier schrieben was dein Programm machen sollte und dann mit dem Debugger testen ob es das auch tut.

Benutzeravatar
Wang Tang
Mausschubser
Mausschubser
Beiträge: 92
Registriert: 5. Dez 2006 17:57

Beitrag von Wang Tang »

Hm danke. Ein List.get(0) und List.get(1) haben beide das erste Listenelement geliefert, da war der Fehler. Weiß zwar immer noch nicht warum, aber das hab ich jetzt anders gelöst.

Benutzeravatar
Abo
Erstie
Erstie
Beiträge: 18
Registriert: 16. Apr 2007 15:29
Wohnort: Darmstadt

Beitrag von Abo »

Hallo Leute,

ich habe zwar mit der Bit-Länge kein Problem, aber ich bekomme folgende Fehler-Meldung beim Testen:
Testsuite: TestEncoding
Tests run: 2, Failures: 1, Errors: 0, Time elapsed: 0.073 sec

Testcase: testSimple took 0.026 sec
Testcase: testFaust took 0.014 sec
FAILED
You returned null as your codeTable.
junit.framework.AssertionFailedError: You returned null as your codeTable.
at TestEncoding.fileTest(TestEncoding.java:21)
at TestEncoding.testFaust(TestEncoding.java:75)

Da die CodeTabelle am Anfang bei mir initialisiert wird, kann es ja nicht sein, dass es Null ist, aber ich weiss jetzt nicht, woran es liegen könnte.

Hat jemand eine Idee oder hatte jemand auch das selbe Problem?

MfG

Edoat
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 242
Registriert: 26. Feb 2007 15:10

Beitrag von Edoat »

Hast du die vorgegebene Funktion, die die Code Table zurück gibt geändert? Die gibt sonst null zurück.

Falls ja, würde ich dir mal empfehlen bei deinen eigenen Tests noch mal genau nachzuschauen, ob du die Codetabelle irgendwann falsch setzt.

Benutzeravatar
Gnomix
Computerversteher
Computerversteher
Beiträge: 306
Registriert: 31. Okt 2005 08:44

Beitrag von Gnomix »

Wang Tang hat geschrieben:puh, bin schon selten dumm..
Aus Debug-Zwecken bei der frequency was geändert -> falscher Baum -> falsche Bitlänge.
@Wang Tang: was meinst du mit Frequency ?
Ich habe nämlich das gleiche Problem, und komme nicht dahinter, wo mein Fehler sein soll.

Edoat
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 242
Registriert: 26. Feb 2007 15:10

Beitrag von Edoat »

Ich schätze mal mit frequency (engl. Häufigkeit) meint er wie der die Anzahlen der Bitkombinationen (also der "character") für den Aufbau seines Huffman Codes berechnet hat.

Benutzeravatar
Gnomix
Computerversteher
Computerversteher
Beiträge: 306
Registriert: 31. Okt 2005 08:44

Beitrag von Gnomix »

Gibt es denn beim bestimmen der Anzahl eine andere Möglichkeit als die Datei Zeichenweise einzulesen und die Anzahl zu speichern, dann die Bitstrings bestimmen und dann den Text nochmal durchgehen und die Zeichen fuer Zeichen die Bitstrings in die Ausgabedatei zu schreiben ?

Benutzeravatar
R|ng0
Mausschubser
Mausschubser
Beiträge: 71
Registriert: 24. Dez 2006 19:17

Beitrag von R|ng0 »

Gnomix hat geschrieben:Gibt es denn beim bestimmen der Anzahl eine andere Möglichkeit als die Datei Zeichenweise einzulesen und die Anzahl zu speichern, dann die Bitstrings bestimmen und dann den Text nochmal durchgehen und die Zeichen fuer Zeichen die Bitstrings in die Ausgabedatei zu schreiben ?
Ich kann mir schwer eine andere vorstellen.
Du musst ja um die Häufigkeit zu bestimmen die Datei einmal lesen und aus der Häufigkeit ergibt sich dann erst der Huffman Baum, bzw. die Kodierung der Zeichen für dieser Datei.
Erst wenn du diese Kodierung hast, kannst du die Datei kodieren und musst dann natürlich irgendwie jedes Zeichen noch mal abklappern und den entsprechenden Code in den Stream schreiben.

Antworten

Zurück zu „Archiv“