Morsecodierung und Binäre Bäume

Hallo zusammen!
Und zwar sitze ich nun schon länger an einem Programm mit dem ich einen Morse Code decodieren bzw. encodieren möchte. Allerdings komme ich nun nicht weiter, im Anhang befindet sich mein Programm und ich habe dazu geschrieben was meiner Meinung nach noch fällt, korrigiert mich bitte falls ich etwas falsch empfunden habe, da ich mich noch am Anfang des Programmierens befinde.
Ich habe das ganze mit drei TextAreas erstellt und drei Buttons, zum einen zum decodieren und encodieren.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;



public class Morsen extends JFrame {
// Anfang Attribute
private JTextArea jTextArea1 = new JTextArea("");
private JScrollPane jTextArea1ScrollPane = new JScrollPane(jTextArea1);
private JTextArea jTextArea2 = new JTextArea("");
private JScrollPane jTextArea2ScrollPane = new JScrollPane(jTextArea2);
private JTextArea decodiert = new JTextArea("");
private JScrollPane decodiertScrollPane = new JScrollPane(decodiert);
private JButton bCodieren = new JButton();
private JButton bDecodieren1 = new JButton();
private JButton bBeenden = new JButton();
private JLabel lAusgangstext = new JLabel();
private JLabel jLabel2 = new JLabel();
private JLabel lDecodierterText = new JLabel();

// Ende Attribute

public Morsen() {
// Frame-Initialisierung
super();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 721;
int frameHeight = 500;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
setTitle("Morsen");
setResizable(false);
Container cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten

jTextArea1ScrollPane.setBounds(24, 92, 200, 244);
cp.add(jTextArea1ScrollPane);
jTextArea2ScrollPane.setBounds(262, 94, 200, 236);
cp.add(jTextArea2ScrollPane);
decodiertScrollPane.setBounds(478, 94, 200, 236);
cp.add(decodiertScrollPane);
bCodieren.setBounds(206, 359, 75, 25);
bCodieren.setText("Codieren");
bCodieren.setMargin(new Insets(2, 2, 2, 2));
bCodieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bCodieren_ActionPerformed(evt);
}
});
cp.add(bCodieren);
bDecodieren1.setBounds(429, 363, 75, 25);
bDecodieren1.setText("Decodieren");
bDecodieren1.setMargin(new Insets(2, 2, 2, 2));
bDecodieren1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bDecodieren1_ActionPerformed(evt);
}
});
cp.add(bDecodieren1);
bBeenden.setBounds(315, 419, 75, 25);
bBeenden.setText("Beenden");
bBeenden.setMargin(new Insets(2, 2, 2, 2));
bBeenden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bBeenden_ActionPerformed(evt);
}
});
cp.add(bBeenden);
lAusgangstext.setBounds(40, 56, 153, 25);
lAusgangstext.setText("Ausgangstext");
cp.add(lAusgangstext);
jLabel2.setBounds(288, 64, 153, 25);
jLabel2.setText("text");
cp.add(jLabel2);
lDecodierterText.setBounds(488, 56, 153, 25);
lDecodierterText.setText("Decodierter Text");
cp.add(lDecodierterText);
// Ende Komponenten

this.erzeugeMorsebaum();

} // end of public Morsen

// Anfang Methoden

public static void main(String[] args) {
new Morsen();
} // end of main

public void bCodieren_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen

} // end of bCodieren_ActionPerformed

public void bDecodieren1_ActionPerformed(ActionEvent evt) {

String string1;
char zeichen;

decodiert.setText(“t“);
string1 = codiert.getText();
aktuellerBaum = morsebaum; //aktuellerBaum muss noch in der Morseanwendung deklariert werden
for (int i = 0; i <string1.length(); i++)
{
zeichen = string1.charAt(i); //bei String Beginn bei 0 !!!
this.verarbeiteMorsezeichen(zeichen); //noch zu programmieren
}
}



public void bBeenden_ActionPerformed(ActionEvent evt) {
System.exit(0);

} // end of bBeenden_ActionPerformed
public void erzeugeMorsebaum()
{
BinaryTree<String> baum1, baum2, baum3, baum4, baum5, baum6, baum7, baum8;
baum1 = new BinaryTree <String> ("H");
baum2 = new BinaryTree <String> ("V");
baum3 = new BinaryTree <String> ("S", baum1, baum2);
baum1 = new BinaryTree <String> ("F");
baum2 = new BinaryTree <String> ("Ü");
baum4 = new BinaryTree <String> ("U", baum1, baum2);
baum5 = new BinaryTree <String> ("I", baum3, baum4);
baum1 = new BinaryTree <String> ("L");
baum3 = new BinaryTree <String> ("R", baum1);
baum1 = new BinaryTree <String> ("P");
baum2 = new BinaryTree <String> ("J");
baum4 = new BinaryTree <String> ("W", baum1, baum2);
baum6 = new BinaryTree <String> ("A", baum3, baum4);
baum7 = new BinaryTree <String> ("E", baum5, baum6);
baum1 = new BinaryTree <String> ("B");
baum2 = new BinaryTree <String> ("X");
baum3 = new BinaryTree <String> ("D", baum1, baum2);
baum1 = new BinaryTree <String> ("C");
baum2 = new BinaryTree <String> ("Y");
baum4 = new BinaryTree <String> ("K", baum1, baum2);
baum5 = new BinaryTree <String> ("N", baum3, baum4);
baum1 = new BinaryTree <String> ("Z");
baum2 = new BinaryTree <String> ("Q");
baum3 = new BinaryTree <String> ("G", baum1, baum2);
baum1 = new BinaryTree <String> ("Ö");
baum2 = new BinaryTree <String> ("CH");
baum4 = new BinaryTree <String> ("O", baum1, baum2);
baum6 = new BinaryTree <String> ("M", baum3, baum4);
baum8 = new BinaryTree <String> ("T", baum5, baum6);
morsebaum = new BinaryTree <String> ("#", baum7, baum8);
}

// Ende Methoden
} // end of class Morsen




public class BinaryTree<ContentType> {


private class BTNode {

private ContentType content;
private BinaryTree<ContentType> left, right;

private BTNode(ContentType pContent) {

this.content = pContent;
left = new BinaryTree<ContentType>();
right = new BinaryTree<ContentType>();
}

}



private BTNode node;

public BinaryTree() {
this.node = null;
}

public BinaryTree(ContentType pContent) {
if (pContent != null) {
this.node = new BTNode(pContent);
} else {
this.node = null;
}
}

public BinaryTree(ContentType pContent, BinaryTree<ContentType> pLeftTree, BinaryTree<ContentType> pRightTree) {
if (pContent != null) {
this.node = new BTNode(pContent);
if (pLeftTree != null) {
this.node.left = pLeftTree;
} else {
this.node.left = new BinaryTree<ContentType>();
}
if (pRightTree != null) {
this.node.right = pRightTree;
} else {
this.node.right = new BinaryTree<ContentType>();
}
} else {
// Da der Inhalt null ist, wird ein leerer BinarySearchTree erzeugt.
this.node = null;
}
}

public boolean isEmpty() {
return this.node == null;
}

public void setContent(ContentType pContent) {
if (pContent != null) {
if (this.isEmpty()) {
node = new BTNode(pContent);
this.node.left = new BinaryTree<ContentType>();
this.node.right = new BinaryTree<ContentType>();
}
this.node.content = pContent;
}
}

public ContentType getContent() {
if (this.isEmpty()) {
return null;
} else {
return this.node.content;
}
}

public void setLeftTree(BinaryTree<ContentType> pTree) {
if (!this.isEmpty() && pTree != null) {
this.node.left = pTree;
}
}

public void setRightTree(BinaryTree<ContentType> pTree) {
if (!this.isEmpty() && pTree != null) {
this.node.right = pTree;
}
}

public BinaryTree<ContentType> getLeftTree() {
if (!this.isEmpty()) {
return this.node.left;
} else {
return null;
}
}

public BinaryTree<ContentType> getRightTree() {
if (!this.isEmpty()) {
return this.node.right;
} else {
return null;
}
}

}

Danke im Voraus!
 

httpdigest

Top Contributor
Ich finde lustig, dass Leuten irgendwie niemals von selbst auffällt, dass der reingeklatschte Quellcode nicht korrekt formatiert wird (z.B. führende Leerzeichen in jeder Zeile entfernt werden). Sucht man dann nicht eventuell im Texteditor (hier auf dem Forum) einen Button oder irgendeine Möglichkeit, um Code richtig zu formatieren?
Wirklich jedes gottverdammte einzelne Mal muss man den Leuten sagen: Haallloooo?! Es gibt da diesen einen Knopf ganz präsent in der Toolbar vom Editor. Der </>. :)
Ich sag ja: wir brauchen einen Autoformatter, der reingeklatschten Code erkennt und formatiert.
 

temi

Top Contributor
Ich finde lustig, dass Leuten irgendwie niemals von selbst auffällt, dass der reingeklatschte Quellcode nicht korrekt formatiert wird (z.B. führende Leerzeichen in jeder Zeile entfernt werden). Sucht man dann nicht eventuell im Texteditor (hier auf dem Forum) einen Button oder irgendeine Möglichkeit, um Code richtig zu formatieren? :)
Das ist der dezente Hinweis auf die Code-Tags: Das </> Symbol im Editor. ;)
 
[CODE lang="java" title="Entschuldigt das ich gerade neu bin.."]import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;



public class Morsen extends JFrame {
// Anfang Attribute
private JTextArea jTextArea1 = new JTextArea("");
private JScrollPane jTextArea1ScrollPane = new JScrollPane(jTextArea1);
private JTextArea jTextArea2 = new JTextArea("");
private JScrollPane jTextArea2ScrollPane = new JScrollPane(jTextArea2);
private JTextArea decodiert = new JTextArea("");
private JScrollPane decodiertScrollPane = new JScrollPane(decodiert);
private JButton bCodieren = new JButton();
private JButton bDecodieren1 = new JButton();
private JButton bBeenden = new JButton();
private JLabel lAusgangstext = new JLabel();
private JLabel jLabel2 = new JLabel();
private JLabel lDecodierterText = new JLabel();

// Ende Attribute

public Morsen() {
// Frame-Initialisierung
super();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 721;
int frameHeight = 500;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
setTitle("Morsen");
setResizable(false);
Container cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten

jTextArea1ScrollPane.setBounds(24, 92, 200, 244);
cp.add(jTextArea1ScrollPane);
jTextArea2ScrollPane.setBounds(262, 94, 200, 236);
cp.add(jTextArea2ScrollPane);
decodiertScrollPane.setBounds(478, 94, 200, 236);
cp.add(decodiertScrollPane);
bCodieren.setBounds(206, 359, 75, 25);
bCodieren.setText("Codieren");
bCodieren.setMargin(new Insets(2, 2, 2, 2));
bCodieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bCodieren_ActionPerformed(evt);
}
});
cp.add(bCodieren);
bDecodieren1.setBounds(429, 363, 75, 25);
bDecodieren1.setText("Decodieren");
bDecodieren1.setMargin(new Insets(2, 2, 2, 2));
bDecodieren1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bDecodieren1_ActionPerformed(evt);
}
});
cp.add(bDecodieren1);
bBeenden.setBounds(315, 419, 75, 25);
bBeenden.setText("Beenden");
bBeenden.setMargin(new Insets(2, 2, 2, 2));
bBeenden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bBeenden_ActionPerformed(evt);
}
});
cp.add(bBeenden);
lAusgangstext.setBounds(40, 56, 153, 25);
lAusgangstext.setText("Ausgangstext");
cp.add(lAusgangstext);
jLabel2.setBounds(288, 64, 153, 25);
jLabel2.setText("text");
cp.add(jLabel2);
lDecodierterText.setBounds(488, 56, 153, 25);
lDecodierterText.setText("Decodierter Text");
cp.add(lDecodierterText);
// Ende Komponenten

this.erzeugeMorsebaum();

} // end of public Morsen

// Anfang Methoden

public static void main(String[] args) {
new Morsen();
} // end of main

public void bCodieren_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen

} // end of bCodieren_ActionPerformed

public void bDecodieren1_ActionPerformed(ActionEvent evt) {

String string1;
char zeichen;

decodiert.setText(“t“);
string1 = codiert.getText();
aktuellerBaum = morsebaum; //aktuellerBaum muss noch in der Morseanwendung deklariert werden
for (int i = 0; i <string1.length(); i++)
{
zeichen = string1.charAt(i); //bei String Beginn bei 0 !!!
this.verarbeiteMorsezeichen(zeichen); //noch zu programmieren
}
}



public void bBeenden_ActionPerformed(ActionEvent evt) {
System.exit(0);

} // end of bBeenden_ActionPerformed
public void erzeugeMorsebaum()
{
BinaryTree<String> baum1, baum2, baum3, baum4, baum5, baum6, baum7, baum8;
baum1 = new BinaryTree <String> ("H");
baum2 = new BinaryTree <String> ("V");
baum3 = new BinaryTree <String> ("S", baum1, baum2);
baum1 = new BinaryTree <String> ("F");
baum2 = new BinaryTree <String> ("Ü");
baum4 = new BinaryTree <String> ("U", baum1, baum2);
baum5 = new BinaryTree <String> ("I", baum3, baum4);
baum1 = new BinaryTree <String> ("L");
baum3 = new BinaryTree <String> ("R", baum1);
baum1 = new BinaryTree <String> ("P");
baum2 = new BinaryTree <String> ("J");
baum4 = new BinaryTree <String> ("W", baum1, baum2);
baum6 = new BinaryTree <String> ("A", baum3, baum4);
baum7 = new BinaryTree <String> ("E", baum5, baum6);
baum1 = new BinaryTree <String> ("B");
baum2 = new BinaryTree <String> ("X");
baum3 = new BinaryTree <String> ("D", baum1, baum2);
baum1 = new BinaryTree <String> ("C");
baum2 = new BinaryTree <String> ("Y");
baum4 = new BinaryTree <String> ("K", baum1, baum2);
baum5 = new BinaryTree <String> ("N", baum3, baum4);
baum1 = new BinaryTree <String> ("Z");
baum2 = new BinaryTree <String> ("Q");
baum3 = new BinaryTree <String> ("G", baum1, baum2);
baum1 = new BinaryTree <String> ("Ö");
baum2 = new BinaryTree <String> ("CH");
baum4 = new BinaryTree <String> ("O", baum1, baum2);
baum6 = new BinaryTree <String> ("M", baum3, baum4);
baum8 = new BinaryTree <String> ("T", baum5, baum6);
morsebaum = new BinaryTree <String> ("#", baum7, baum8);
}

// Ende Methoden
} // end of class Morsen




public class BinaryTree<ContentType> {


private class BTNode {

private ContentType content;
private BinaryTree<ContentType> left, right;

private BTNode(ContentType pContent) {

this.content = pContent;
left = new BinaryTree<ContentType>();
right = new BinaryTree<ContentType>();
}

}



private BTNode node;

public BinaryTree() {
this.node = null;
}

public BinaryTree(ContentType pContent) {
if (pContent != null) {
this.node = new BTNode(pContent);
} else {
this.node = null;
}
}

public BinaryTree(ContentType pContent, BinaryTree<ContentType> pLeftTree, BinaryTree<ContentType> pRightTree) {
if (pContent != null) {
this.node = new BTNode(pContent);
if (pLeftTree != null) {
this.node.left = pLeftTree;
} else {
this.node.left = new BinaryTree<ContentType>();
}
if (pRightTree != null) {
this.node.right = pRightTree;
} else {
this.node.right = new BinaryTree<ContentType>();
}
} else {
// Da der Inhalt null ist, wird ein leerer BinarySearchTree erzeugt.
this.node = null;
}
}

public boolean isEmpty() {
return this.node == null;
}

public void setContent(ContentType pContent) {
if (pContent != null) {
if (this.isEmpty()) {
node = new BTNode(pContent);
this.node.left = new BinaryTree<ContentType>();
this.node.right = new BinaryTree<ContentType>();
}
this.node.content = pContent;
}
}

public ContentType getContent() {
if (this.isEmpty()) {
return null;
} else {
return this.node.content;
}
}

public void setLeftTree(BinaryTree<ContentType> pTree) {
if (!this.isEmpty() && pTree != null) {
this.node.left = pTree;
}
}

public void setRightTree(BinaryTree<ContentType> pTree) {
if (!this.isEmpty() && pTree != null) {
this.node.right = pTree;
}
}

public BinaryTree<ContentType> getLeftTree() {
if (!this.isEmpty()) {
return this.node.left;
} else {
return null;
}
}

public BinaryTree<ContentType> getRightTree() {
if (!this.isEmpty()) {
return this.node.right;
} else {
return null;
}
}

}[/CODE]
 
K

kneitzel

Gast
Von wo hast Du es denn jetzt kopiert? Bitte IDE nutzen und da die Autformatierung nutzen, so dass es richtig eingerückt ist. Dann ist es auch deutlich lesbarer:

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;



public class Morsen extends JFrame {
    // Anfang Attribute
    private JTextArea jTextArea1 = new JTextArea("");
    private JScrollPane jTextArea1ScrollPane = new JScrollPane(jTextArea1);
    private JTextArea jTextArea2 = new JTextArea("");
    private JScrollPane jTextArea2ScrollPane = new JScrollPane(jTextArea2);
    private JTextArea decodiert = new JTextArea("");
    private JScrollPane decodiertScrollPane = new JScrollPane(decodiert);
    private JButton bCodieren = new JButton();
    private JButton bDecodieren1 = new JButton();
    private JButton bBeenden = new JButton();
    private JLabel lAusgangstext = new JLabel();
    private JLabel jLabel2 = new JLabel();
    private JLabel lDecodierterText = new JLabel();

// Ende Attribute

    public Morsen() {
// Frame-Initialisierung
        super();
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        int frameWidth = 721;
        int frameHeight = 500;
        setSize(frameWidth, frameHeight);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (d.width - getSize().width) / 2;
        int y = (d.height - getSize().height) / 2;
        setLocation(x, y);
        setTitle("Morsen");
        setResizable(false);
        Container cp = getContentPane();
        cp.setLayout(null);
// Anfang Komponenten

        jTextArea1ScrollPane.setBounds(24, 92, 200, 244);
        cp.add(jTextArea1ScrollPane);
        jTextArea2ScrollPane.setBounds(262, 94, 200, 236);
        cp.add(jTextArea2ScrollPane);
        decodiertScrollPane.setBounds(478, 94, 200, 236);
        cp.add(decodiertScrollPane);
        bCodieren.setBounds(206, 359, 75, 25);
        bCodieren.setText("Codieren");
        bCodieren.setMargin(new Insets(2, 2, 2, 2));
        bCodieren.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                bCodieren_ActionPerformed(evt);
            }
        });
        cp.add(bCodieren);
        bDecodieren1.setBounds(429, 363, 75, 25);
        bDecodieren1.setText("Decodieren");
        bDecodieren1.setMargin(new Insets(2, 2, 2, 2));
        bDecodieren1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                bDecodieren1_ActionPerformed(evt);
            }
        });
        cp.add(bDecodieren1);
        bBeenden.setBounds(315, 419, 75, 25);
        bBeenden.setText("Beenden");
        bBeenden.setMargin(new Insets(2, 2, 2, 2));
        bBeenden.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                bBeenden_ActionPerformed(evt);
            }
        });
        cp.add(bBeenden);
        lAusgangstext.setBounds(40, 56, 153, 25);
        lAusgangstext.setText("Ausgangstext");
        cp.add(lAusgangstext);
        jLabel2.setBounds(288, 64, 153, 25);
        jLabel2.setText("text");
        cp.add(jLabel2);
        lDecodierterText.setBounds(488, 56, 153, 25);
        lDecodierterText.setText("Decodierter Text");
        cp.add(lDecodierterText);
// Ende Komponenten

        this.erzeugeMorsebaum();

    } // end of public Morsen

// Anfang Methoden

    public static void main(String[] args) {
        new Morsen();
    } // end of main

    public void bCodieren_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen

    } // end of bCodieren_ActionPerformed

    public void bDecodieren1_ActionPerformed(ActionEvent evt) {

        String string1;
        char zeichen;

        decodiert.setText(“t“);
        string1 = codiert.getText();
        aktuellerBaum = morsebaum; //aktuellerBaum muss noch in der Morseanwendung deklariert werden
        for (int i = 0; i <string1.length(); i++)
        {
            zeichen = string1.charAt(i); //bei String Beginn bei 0 !!!
            this.verarbeiteMorsezeichen(zeichen); //noch zu programmieren
        }
    }



    public void bBeenden_ActionPerformed(ActionEvent evt) {
        System.exit(0);

    } // end of bBeenden_ActionPerformed
    public void erzeugeMorsebaum()
    {
        BinaryTree<String> baum1, baum2, baum3, baum4, baum5, baum6, baum7, baum8;
        baum1 = new BinaryTree <String> ("H");
        baum2 = new BinaryTree <String> ("V");
        baum3 = new BinaryTree <String> ("S", baum1, baum2);
        baum1 = new BinaryTree <String> ("F");
        baum2 = new BinaryTree <String> ("Ü");
        baum4 = new BinaryTree <String> ("U", baum1, baum2);
        baum5 = new BinaryTree <String> ("I", baum3, baum4);
        baum1 = new BinaryTree <String> ("L");
        baum3 = new BinaryTree <String> ("R", baum1);
        baum1 = new BinaryTree <String> ("P");
        baum2 = new BinaryTree <String> ("J");
        baum4 = new BinaryTree <String> ("W", baum1, baum2);
        baum6 = new BinaryTree <String> ("A", baum3, baum4);
        baum7 = new BinaryTree <String> ("E", baum5, baum6);
        baum1 = new BinaryTree <String> ("B");
        baum2 = new BinaryTree <String> ("X");
        baum3 = new BinaryTree <String> ("D", baum1, baum2);
        baum1 = new BinaryTree <String> ("C");
        baum2 = new BinaryTree <String> ("Y");
        baum4 = new BinaryTree <String> ("K", baum1, baum2);
        baum5 = new BinaryTree <String> ("N", baum3, baum4);
        baum1 = new BinaryTree <String> ("Z");
        baum2 = new BinaryTree <String> ("Q");
        baum3 = new BinaryTree <String> ("G", baum1, baum2);
        baum1 = new BinaryTree <String> ("Ö");
        baum2 = new BinaryTree <String> ("CH");
        baum4 = new BinaryTree <String> ("O", baum1, baum2);
        baum6 = new BinaryTree <String> ("M", baum3, baum4);
        baum8 = new BinaryTree <String> ("T", baum5, baum6);
        morsebaum = new BinaryTree <String> ("#", baum7, baum8);
    }

// Ende Methoden
} // end of class Morsen




public class BinaryTree<ContentType> {


    private class BTNode {

        private ContentType content;
        private BinaryTree<ContentType> left, right;

        private BTNode(ContentType pContent) {

            this.content = pContent;
            left = new BinaryTree<ContentType>();
            right = new BinaryTree<ContentType>();
        }

    }



    private BTNode node;

    public BinaryTree() {
        this.node = null;
    }

    public BinaryTree(ContentType pContent) {
        if (pContent != null) {
            this.node = new BTNode(pContent);
        } else {
            this.node = null;
        }
    }

    public BinaryTree(ContentType pContent, BinaryTree<ContentType> pLeftTree, BinaryTree<ContentType> pRightTree) {
        if (pContent != null) {
            this.node = new BTNode(pContent);
            if (pLeftTree != null) {
                this.node.left = pLeftTree;
            } else {
                this.node.left = new BinaryTree<ContentType>();
            }
            if (pRightTree != null) {
                this.node.right = pRightTree;
            } else {
                this.node.right = new BinaryTree<ContentType>();
            }
        } else {
// Da der Inhalt null ist, wird ein leerer BinarySearchTree erzeugt.
            this.node = null;
        }
    }

    public boolean isEmpty() {
        return this.node == null;
    }

    public void setContent(ContentType pContent) {
        if (pContent != null) {
            if (this.isEmpty()) {
                node = new BTNode(pContent);
                this.node.left = new BinaryTree<ContentType>();
                this.node.right = new BinaryTree<ContentType>();
            }
            this.node.content = pContent;
        }
    }

    public ContentType getContent() {
        if (this.isEmpty()) {
            return null;
        } else {
            return this.node.content;
        }
    }

    public void setLeftTree(BinaryTree<ContentType> pTree) {
        if (!this.isEmpty() && pTree != null) {
            this.node.left = pTree;
        }
    }

    public void setRightTree(BinaryTree<ContentType> pTree) {
        if (!this.isEmpty() && pTree != null) {
            this.node.right = pTree;
        }
    }

    public BinaryTree<ContentType> getLeftTree() {
        if (!this.isEmpty()) {
            return this.node.left;
        } else {
            return null;
        }
    }

    public BinaryTree<ContentType> getRightTree() {
        if (!this.isEmpty()) {
            return this.node.right;
        } else {
            return null;
        }
    }

}
 
K

kneitzel

Gast
Und dann noch: Herzlich Willkommen im Forum! Ärger Dich nicht über dieses Code posten und nimm es uns nicht übel. Der Code ist halt nur schwer lesbar und wir wollen ja auch helfen ...

Und es fehlen mir konkrete Fragen - da ist Code und es fehlen konkrete Fragen die ich jetzt beantworten könnte. Daher einfach mal eine andere Rückmeldung, in der ich konkrete Fragen stelle, um ein Bild zu gewinnen. Das Bild dient uns dazu, die dann konkrete Hilfe geben zu können.

Also bezüglich Deines Codes:
Da ist ja noch extrem viel offen und somit auch direkt rot. Wie ist der Code entstanden? Generell ist es so, dass Du immer nur eins nach dem anderen machen solltest. Also wenn Du Code schreibst, der z.B. irgend etwas mit einer Variablen "aktuellerBaum" macht, dann deklariere die Variable sofort! Ein Kommentar "//aktuellerBaum muss noch in der Morseanwendung deklariert werden" ist so gesehen "unsinnig".

Also in kleinen Schritten vorgehen und dabei dafür sorgen, dass die Applikation übersetzt. Nur wenn der Code übersetzbar ist, kann die IDE Dir helfen. Intern werden die Klassen übersetzt und dann bekommst Du einiges an unterstützung.

Was nutzt Du, um den Code zu schreiben? Ich würde jedem Anfänger zu IntelliJ raten, wobei NetBeans auch sehr gut sein soll. Eclipse ist nichts für Anfänger - das würde ich mir nicht an tun, so es sich vermeiden lässt (Und es nicht von Schule oder Uni vorgegeben wurde!). Daher ggf. https://jetbrains.com und IntelliJ IDEA in der Community Edition herunter laden / installieren.

Was ist das für ein Projekt? Ist das eine Schulaufgabe? Oder ein eigenes Projekt? Das ist prinzipiell unwichtig, aber davon und was Du schon für Vorwissen hast, würde ich dir unterschiedliche Dinge raten.

Wenn Du schon so weit bist, dass Du auch etwas "Objektorientierung" kannst bzw. lernen willst/kannst/sollst, dann kann man das als GUI machen. Dann aber etwas besser aufgeteilt. Wenn Du noch nicht so weit bist, wäre mein Ratschlag: Bleib komplett bei der Kommandozeile.

- Wie ist Dein aktueller Lernstand?
- Was ist Dein aktuelles Ziel? (Eigenes Projekt -> nutzen der Collections vom Framework. Schulische Übung -> Dann wird der Morsebaum als Übung für einen Baum mit Operationen auf dem Baum sein und die Collections sind kein Thema mehr ...)
 
Servus, es ist eine schulische Übung, danke schonmal für deine Anmerkungen. Ich nutze den Java editor und JFrame, wenn du das meinst. Ich kann im Anhang auch nochmal die Aufgabe mit senden, ich weiss ihr sollt meine Aufgaben nicht machen, nur ich weiss tatsächlich nicht mehr weiter.
Mit freundlichen Grüßen
 

Anhänge

  • Codierung-und-binäre-bäume.pdf
    421,6 KB · Aufrufe: 7
K

kneitzel

Gast
Ok, danke erst einmal für die Infos. Ich habe jetzt wenig Zeit und würde erst Morgen Abend zu mehr kommen.

Habt ihr im Unterricht doch schon Objektorientiert gearbeitet, also eine Klasse geschrieben (z.B. eine Liste) und diese dann in einer anderen Klasse benutzt, oder sehe ich das falsch?

Bei so einer Aufgabe graut es mir ehrlich gesagt und ich habe vollstes Verständnis, wenn man da am Anfang Probleme hat. So wie ich die Aufgabe verstehe, wird da viel zu viel in eine Klasse rein geknallt und dann wundert man sich wenn Leute Verständnis-Probleme haben. So das mit den Klassen oben richtig ist und es bis zum Wochenende Zeit hat, dann machen wir gerne am Samstag eine kleine Session.
 
Ich denke ich wäre viel einfacher an die Sache herangegangen...
Java:
import java.util.Arrays;
import java.util.stream.Collectors;

public class Morse {

    public final static String[] codes = { "T", "E", "M", "N", "A", "I", "O", "G", "K", "D", "W", "R", "U", "S", "CH", "Ö", "Q", "Z", "Y", "C", "X", "B", "J", "P", "Ä", "L", "Ü", "F", "V", "H" };

    public static String encode1(String s) {
        for (int i = 0; i < codes.length; i++) {
            if (codes[i].equals(s)) {
                StringBuilder r = new StringBuilder();
                while (i >= 0) {
                    if (i % 2 == 0) {
                        r.append("-");
                    } else {
                        r.append(".");
                    }
                    i = i / 2 - 1;
                }
                return r.reverse().toString();
            }
        }
        return "";
    }

    public static String encode2(String s) {
        return Arrays.stream(s.split(" ")).map(s1 -> encode1(s1)).collect(Collectors.joining(" "));
    }

    public static String decode1(String s) {
        if (s.length() > 4) {
            throw new IllegalArgumentException();
        }

        int r = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '.') {
                r = (r + 1) * 2;
            } else {
                r = (r * 2) + 1;
            }
        }
        return codes[r - 1];
    }

    public static String decode2(String s) {
        return Arrays.stream(s.split(" ")).map(s1 -> decode1(s1)).collect(Collectors.joining(" "));
    }

    public static void main(String[] args) {
        System.out.println(encode2("L Ö L"));
        System.out.println(decode2(encode2("L Ö L")));
        System.out.println(decode2("... --- ..."));
        System.out.println(encode2(decode2("... --- ...")));
    }

}
 

Neue Themen


Oben