Hallo,
bin neu hier im Forum und hoffe Ihr könnt mir helfen. Bin mir unsicher ob schon jemand mal das gleiche
Problem gepostet hat und bitte es zu verzeihen falls es so sein sollte.
Für die Uni soll ich eine Java Klasse implementieren mittels einer verlinkten Struktur die alle Methoden
des ADT Baums unterstützt.
Soweit so gut, ich habe bisher alle Methoden korrekt implementiert, dass sehe ich, da
unser Prof eine Testklasse geschrieben hat mit deren Hilfe man seinen Code überprüfen kann.
Es hakt nun allerdings bei der remove Methode.
Die Testklasse schmeisst mir eine NullPointerException, allerdings weiß ich nicht was ich falsch gemacht habe. Hier mein Code:
und hier noch die postOrder Methode obwohl ich mir bei der nicht sicher bin, dass ich sie korrekt implementiert habe. Denke eher das es sich dabei um eine PreOrder Methode handelt.
Hier nochmal die Fehlermeldung der Testklasse:
1.Fehler in der remove()-Methode: Es wurde fehlerhaft eine Exception ausgelößt. Details: Es wurde versucht, auf einem Baum die remove()-Methode aufzurufen. Dabei wurde fehlerhaft eine Exception: 'NullPointerException' ausgelößt.
Über ein Feedback wäre ich sehr dankbar!:toll:
bin neu hier im Forum und hoffe Ihr könnt mir helfen. Bin mir unsicher ob schon jemand mal das gleiche
Problem gepostet hat und bitte es zu verzeihen falls es so sein sollte.
Für die Uni soll ich eine Java Klasse implementieren mittels einer verlinkten Struktur die alle Methoden
des ADT Baums unterstützt.
Soweit so gut, ich habe bisher alle Methoden korrekt implementiert, dass sehe ich, da
unser Prof eine Testklasse geschrieben hat mit deren Hilfe man seinen Code überprüfen kann.
Es hakt nun allerdings bei der remove Methode.
Die Testklasse schmeisst mir eine NullPointerException, allerdings weiß ich nicht was ich falsch gemacht habe. Hier mein Code:
Java:
public E remove( Position<E> v )
throws InvalidPositionException
{
if( isEmpty() || v == null )
{
throw new InvalidPositionException();
}
TreeNode<E> z = ( TreeNode<E> )v;
if( z.getNumberOfChildren() == 0 )
{
TreeNode<E> parent = z.getParent();
E element = z.getElement();
parent.removeChild( v );
n = n - 1;
return element;
}
else if( isRoot( v ) )
{
int kinder = z.getNumberOfChildren();
while( kinder > 0 )
{
postOrder( v );
kinder = kinder - 1;
}
E element = z.getElement();
z = null;
n = n - 1;
return element;
}
else
{
int kinder = z.getNumberOfChildren();
while( kinder > 0 )
{
postOrder( v );
kinder = kinder - 1;
}
TreeNode<E> parent = z.getParent();
E element = z.getElement();
parent.removeChild( v );
n = n - 1;
System.out.println( n );
return element;
}
}
und hier noch die postOrder Methode obwohl ich mir bei der nicht sicher bin, dass ich sie korrekt implementiert habe. Denke eher das es sich dabei um eine PreOrder Methode handelt.
Java:
public void postOrder( Position<E> v )
{
TreeNode<E> x = ( TreeNode<E> )v;
NodePositionList<Position<E>> liste = x.getChildren();
for ( Position<E> kind : liste )
{
n = n - 1;
TreeNode<E> parent = x.getParent();
parent.removeChild(v);
postOrder( kind );
}
}
Hier nochmal die Fehlermeldung der Testklasse:
1.Fehler in der remove()-Methode: Es wurde fehlerhaft eine Exception ausgelößt. Details: Es wurde versucht, auf einem Baum die remove()-Methode aufzurufen. Dabei wurde fehlerhaft eine Exception: 'NullPointerException' ausgelößt.
Über ein Feedback wäre ich sehr dankbar!:toll: