Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

1

07.12.2009, 21:43

Info HAs java -.-* NR.2

Hey zusammen,

habe schon wieder ein Problem mit Java ^^

und zwar handelt es sich bei meinem Projekt um eine Huffman-Kodierung.
Ich scheitere jedoch an der Methode die aus meinem bestehendem Baum einzelne Buchstaben codieren soll.
Hier der Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    public void sucheBuchstabe(char c)
    {
        weg = "";
        found = false;
        Knoten k = new Knoten();
        k.setzeBuchstabe(c);
        Knoten aktuell = (Knoten)items.get(0);
        
        sucheChild(k, aktuell);
        System.out.println(weg);
    }
    
    private void sucheChild(Knoten searched, Knoten aktuell)
    {
        if(searched.gibBuchstabe() != aktuell.gibBuchstabe())
        {
            if(aktuell.gibLinks() != null)
            {
                weg += "0";
                sucheChild(searched, aktuell.gibLinks());
            }
            if(aktuell.gibRechts() != null)
            {
                weg += "1";
                sucheChild(searched, aktuell.gibRechts());
            }

        }
     
        if(searched.gibBuchstabe() == aktuell.gibBuchstabe())
        {
            found = true;
        }  
        
        if(found == false)
        {
            weg = weg.substring( 0, weg.length() - 1 );
        }
    }


der Baum wird schon vollständig aufgebaut (BSP."TEST")
Wurzel - T
........\ ................/ S
......... Knoten Nix
.......................... \.. E

aufgerufen wird bei mir T S und dann E mit der methode.

anstatt: 1 01 00
kommt bei mir
1
0011
011
raus oO

hoffe ihr könnt mir helfen

lg SD

EDIT: items.get(0) fügt natürlich die Wurzel in aktuell ein.
...

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

2

07.12.2009, 23:04

Huhu,

irgendwie sieht das so aus, als ob Deine Rekursion nach einem "Treffer" einfach weiterlaeuft. Nachdem der weg-String dann nicht mehr gekuerzt wird, waechst der einfach quasi unkontrolliert weiter.

Fueg' doch nach beiden Aufrufen von sucheChild(...) (ich meine die beiden Aufrufe innerhalb von sucheChild(...)) ein "if(found) return;" ein.

Gruesse,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

flux

Treue Seele

  • Private Nachricht senden

3

08.12.2009, 09:47

Du löscht doch hiermit den ganzen Weg:
weg = weg.substring( 0, weg.length() - 1 );

Wenn er nach s sucht und bei e ist (also bei dir 00) dann verwirft er den ganzen Weg und s wird als 1 gefunden.

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

4

08.12.2009, 22:25

Zitat von »"flux"«

Du löscht doch hiermit den ganzen Weg:
weg = weg.substring( 0, weg.length() - 1 );


Hm? Damit wird pro Rekursionstiefe nur immer das letzte Zeichen entfernt, bis hin zu einer geringeren Tiefe bis sich das Programm für einen anderen Teilpfad im Baum entscheidet. So wie er die Kürzung einsetzt ist alles OK, daran liegts nicht.

Ich habe es mal eben getestet, bei meinem Baum (mit den beiden zusätzlichen Zeilen im sucheChild()) gibt das Programm "1" für die Suche nach T, "01" für S und "00" für E aus.

Grüße,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

flux

Treue Seele

  • Private Nachricht senden

5

09.12.2009, 08:25

Ach mist. Da hast du wohl recht :oops:

idontknow

unregistriert

6

09.12.2009, 08:42

Mal aus Neugier ne Frage: Was genau soll denn as sein, bzw. was soll es machen? oO

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

7

09.12.2009, 11:13

Danke euch allen das Programm läuft jetzt grundlegend :)

es handelt sich um ein Huffman - Kodierungs verfahren, welches aus einer txt Datei einen Text ausliest(nur großbuchstaben und leerzeichen) und diese dan nach huffman codiert. Natürlich kann das Programm den Codierten Text auch wieder Decodieren ;)

wenn wer den quelltext für seinen Info unterricht braucht einfach mich anschreiben poste ihn dan.

lg
SD
...

Werbeanzeige