Die letzten 10 Beiträge |
eulerscheZahl |
Ich gebe dir ein ja
|
Batista |
@eulerscheZahl
Kannst du bitte folgendes ansehen, und kurzes ja oder nein, ob die Methode richtig funktioniert ?
/** Anzahl der Knoten zaehlen */
public int anzahlKnoten() {
return anzahlKnoten(wurzel);
}
/** Rekursive anzahlKnoten */
private int anzahlKnoten(Knoten k){
if (k==null){
return 0;
}else{
return 1 + anzahlKnoten(k.links)+anzahlKnoten(k.rechts);
}
} |
eulerscheZahl |
Richtig, und genau das Verhalten ist gewünscht, wenn man will, dass entweder nur Ganzzahlen oder nur Gleitpunktzahlen im Baum stehen.
Und wenn ein anderer Programmierer deine Klasse verwendet, weist ihn bereits der Compiler in die Schranken, wenn er es doch versucht. Andernfalls könnte es zu einer RuntimeException führen, die der Programmierer vielleicht gar nicht entdeckt, sondern erst der Endanwender. |
Batista |
Ich dachte ich hätte es verstanden
Man hat den code
code
....
public int anzahlKnoten(Knoten<INHALT> knoten) {
... code
public static void main(String[] args) {
Knoten<Integer> k1 = new Knoten<Integer>(3, null, null);
Knoten<Float> k2 = new Knoten<Float>(3.2f, null, null);
k1.suche(k2);
}
würde
The method suche(Knoten<Integer>) in the type Knoten<Integer> is not applicable for the arguments (Knoten<Float>)
das liefern? |
eulerscheZahl |
Bitte im Zusammenhang zitieren.
Der Codeausschnitt oberhalb des Zitats funktioniert bei Generics nicht mehr, und das ist genau der Sinn von Generics. Du kannst hier schon zur Compilezeit sicherstellen, dass nicht verschiedene Datentypen vermischt werden. |
Batista |
Zitat: |
Original von eulerscheZahl
du siehst, ich habe Integer und Float vermischt. Wenn du den generischen Typ angibst (also Knoten<INHALT>), funktioniert das nicht.
The method suche(Knoten<Integer>) in the type Knoten<Integer> is not applicable for the arguments (Knoten<Float>)
. |
Hier sagst du doch Knoten<INHALT>) funktioniert nicht? aber genau das verwendest du hier? |
eulerscheZahl |
Batista,
ich dachte, das hätten wir HIER geklärt? |
Batista |
Ist der <INHALT> wichtig?
public int anzahlKnoten(Knoten<INHALT> knoten) {
kann man nicht auch
public int anzahlKnoten(Knoten knoten) { schreiben? |
vickal93 |
Ist mir auch grad aufgefallen, aber habe den Fehler in der anzahlKnoten() Methode beseitigt.
Danke nochmal! |
eulerscheZahl |
Irgendwo musst du die aktuelle Position speichern, wo du dich im Baum befindest und von welchem Knoten du die Kinder zählen willst.
Bei der Höhe hast du es ja auch auf die Weise gemacht.
PS: habe oben einen Fehler: wenn die wurzel null ist, gibt es bei mir eine Exception, die beim letzten Test auch ausgelöst wird. |
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen. |