Hallo ich bearbeite gerade eben diese Aufgabe:
Vervollständigen Sie die Methode int evenInts( IntNode n ).
Die Methode evenInts soll die Summe aller geraden Werte im Teilbaum mit der Wurzel n
zurückgeben.
Enthält der Teilbaum keinen geraden Wert, soll eine Ausnahme der Klasse NoResultException
geworfen werden.
Hier ist ist die Klasse zu den Knoten des Baumes und die Ausnahmeklasse:
Wie ich die Summe der gerade Werte bekomme habe ich bereits implementiert. Jedoch weiß ich nicht wie ich die Exception thrown/werfen soll bzw.wie ich abfrage ob ich nun gerade Werte habe oder ob ich sie nicht habe und eben die Exception werfen muss.
Vervollständigen Sie die Methode int evenInts( IntNode n ).
Die Methode evenInts soll die Summe aller geraden Werte im Teilbaum mit der Wurzel n
zurückgeben.
Enthält der Teilbaum keinen geraden Wert, soll eine Ausnahme der Klasse NoResultException
geworfen werden.
Hier ist ist die Klasse zu den Knoten des Baumes und die Ausnahmeklasse:
Java:
public class NoResultException extends Exception {}
public class IntNode {
private int value;
private IntNode leftChild, rightChild;
public IntNode( int i ) {
value = i; leftChild = rightChild = null;
}
public IntNode( int i, IntNode left, IntNode right ) {
value = i; leftChild = left; rightChild = right;
}
public int getValue() { return value; }
public void setValue(int i) { value = i; }
public IntNode getLeftChild() { return leftChild; }
public IntNode getRightChild() { return rightChild; }
public void setLeftChild( IntNode node ) { leftChild = node; }
public void setRightChild( IntNode node ) { rightChild = node; }
public boolean isLeaf() {
return leftChild == null && rightChild == null;
}
}
Wie ich die Summe der gerade Werte bekomme habe ich bereits implementiert. Jedoch weiß ich nicht wie ich die Exception thrown/werfen soll bzw.wie ich abfrage ob ich nun gerade Werte habe oder ob ich sie nicht habe und eben die Exception werfen muss.
Java:
public class IntSearchTree{
private int evenInts( IntNode n ) throws NoResultException{
if(n==null){
return 0;
}else{
if(n.getValue()%2==0){
return n.getValue() + evenInts(n.getLeftChild()) + evenInts(n.getRightChild());
}else{
return evenInts(n.getLeftChild()) + evenInts(n.getRightChild());
}
}
}
}