Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich hab ein Problem bei der Implementierung von der Methode Suchen(String suchSchlüssel)
hier ist mal der Programmcode von der Klasse KNOTEN, Problem ist makiert:
Java:
public class KNOTEN
{
private DATENELEMENT daten;
private KNOTEN linkerNachfolger;
private KNOTEN rechterNachfolger;
public KNOTEN(DATENELEMENT d)
{
daten = d;
linkerNachfolger = null;
rechterNachfolger = null;
}
public DATENELEMENT Suchen(String suchSchlüssel)
{
if(daten.SchluesselIstGleich(suchSchlüssel))
{
return daten;
}
else
{
if(suchSchlüssel < ??? ) <----- Was muss hier rein? *
{
if (linkerNachfolger = null)
{
return linkerNachfolger.Suchen(suchSchlüssel);
}
else
{
return null;
}
}
else
{
if (rechterNachfolger != null)
{
return rechterNachfolger.Suchen(suchSchlüssel);
}
return null;
}
}
}
}
Zeile 25 *
also im Binärbaum gibt es ja einen linkenNachfolger und rechtenNachfolger wie auch am Anfang von der Klasse implementiert wird.
Mein Problem ist jetzt, an dieser makierten Stelle muss ich eine if-Abfrage machen um festzustellen ob der gesuchte Wert (suchSchlüssel) kleiner ist als der Wert des Datenelements.
Wenn ich dann aber für "???" das Wort "daten" einsetze kommt folgende Fehlermeldung: "operator < cannot be applied to java.lang.String,DATENELEMENT"
Falls man noch eine Information braucht um mir die Antwort zu geben einfach sagen.
PS: Falls jemand auch einen Fehler nach der markierten Stelle findet bitte sagen =)
Ich kenn mich noch nich so gut aus mit Java!
public DATENELEMENT Suchen(String suchSchluessel) {
if (daten.getSchluessel().compareTo(suchSchluessel) == 0) {
return daten;
}
else if (daten.getKeyWord().compareTo(suchSchluessel) > 0) {
return rechterNachfolger.suchen(suchSchluessel);
}
else {
return linkeNachfolger.suchen(suchSchluessel);
}
}
Der Code geht davon, dass die Methode getSchluessel den Wert des Key aus DATENELEMENT zurückgibt, was hoffentlich ein String ist. zu beachten ist, dass dies CASE_SENSITIVE ist.
EDIT FYI: Die compareTo-Methode ist quasi der Vergleichsoperator (neben equals()) für Objekte. <> geht nur bei numerischen Werten in Java. Anderer Sprachen unterstützen dies auch bei Zeichenketten, wobei man davon absehen muss, dass dies bei dir auch nicht funktionieren würde, da die Variable daten auf kein Objekt vom Typ String zeigt und man DATENELEMENT und String ohne einen Maßstab genauso wenig vergleichen kann, wie Äppel und Birnen.
oh, eine Schnittstelle? Was hast du dir denn dabei gedacht? Naja, gibt es denn auch irgendwas, was die Schnittstelle implementiert?
Weiterhin denke mal darüber nach, welches Datenfeld (im Prinzip können es ja auch mehrere) denn nun der Schlüssel(Identifikator) der Elemente aus deinem Baum sein soll.