cannot resolve symbol

  • Themenstarter Themenstarter uwemann
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
U

uwemann

Gast
Hallo,

hab ein kleines Problem. Versuche eine Implementierung der Datenstruktur Graph. Habe eine Liste angelegt, welche Knoten verwaltet. Diese Knoten verfügen über einen Slot für Objekte, also allgemeiner Datentyp Object. In diesem sind zum einen wieder die anderen Listen verwaltet. Diese Listen selber verwenden wiederrum die Klasse Liste. Allerdings werden hier nun die Objekte mit einem Typ Nachbar initialisiert, den ich angelegt habe.

Ich kann nun auf die Liste mit einer Funktion getData() auf einen Knoten zu greifen und es wird mir ein Objekt zurückgegeben. Wende ich nun hierauf eine Funktion an die für die Klasse Nachbar definiert wurde bekomme ich folgende Fehlermeldung:
Code:
cannot resolve symbol
symbol  : method getMinutes ()
location: class Node
            System.out.print( " "+ d.getMinutes());
                                    ^

hier der Quelltext:
Code:
..... hier steht noch eine public class
class Liste 
{
/* 
 * Klasse fuer einfach verkettete Listen
 */
    
    private Node head;     // Slot fuer den Kopf der Liste
    private Node tail;     // Slot fuer den Tail der Liste
    private Node current;  // Slot fuer einen aktuellen Knoten in der Liste
    
    // Konstruktur, erzeugt eine leere Liste
    Liste()
    {
	head = null;
	tail = null;
	current = null;
    }

    public Node getHead ()
    {
	return head;
    }
    
    public void setHead (Node n)
    {
	head = n;
	if (this.getTail() == null)
	    this.setTail(n);
    }
    
    public Node getTail ()
    {
	return tail;
    }
    
    public void setTail (Node n)
    {
	tail = n;
	if (this.getHead() == null)
	    this.setHead(n);
    }
    
    public Node getCurrent ()
    {
	return current;
    }
    
    public void setCurrent (Node n)
    {
	current = n;
    }
    
    public boolean isEmpty()
    {
	if (this.getHead() == null)
	    return true;
	else
	    return false;
    }
    
    
    //diese Funktion fügt neue Knoten ein mit Objekt Nachbar
    public void insertOrt(int ort,int stunden,int minuten) {
	this.insertTail(new Node(new Nachbar(ort,tm(stunden,minuten))));
	
    }
    public int tm(int stunden, int minuten) {
	return  minuten + (60 * stunden);
    }

    // Funktion Print druckt die Liste aus
    
 public void Print()
    {
	Nachbar u = new Nachbar(1,20);
	System.out.println(u.getMinutes());
	Node d = this.getHead(); // initialisiere aktuelles Element mit Listenkopf
	
	System.out.print("\nListe: ");
	while (d != null) { // solange Listenende nicht erreicht


// HIER LIEGT DAS PROBLEM :
	    System.out.print( " "+ d.getData().getMinutes());
	    d = d.getNext();                       // gehe zum Nachfolger
	}
    }
    
    
}

class Node
{
/*
 * Klasse fuer Listenelemente
 */

    private Object data;      // Inhalt des Elementes (vom Typ Object)
    private Node next;     // Zeiger zum Nachfolger in der Liste
    
    // Konstruktor nimmt ganze Zahl und gibt ein unverbundenes Listenelement zurueck
    Node(Object obj)
    {
	data = obj;
    }
    
    // Funktion getData gibt den Inhalt des Elementes zurueck
    public Object getData()
    {
	return data;
    }
    
    // Funktion getData gibt den Inhalt des Elementes zurueck
    public void setData(Object obj)
    {
	data = obj;
    }

    // Funktion getNext gibt den Nachfolger in der Liste zurueck 
    public Node getNext()
    {
	return next;
    }
    
    // Funktion setNext setzt den Nachfolger in der Liste auf n
    public void setNext(Node n)
    {
	next = n;
    }


    
}


class Nachbar {

    private int minutes;
    private int ort;
    
    Nachbar(int ort, int min) {
	this.setMinutes(min);
	this.setOrt(ort);
    }

    
    public void setOrt(int ort) {
	this.ort = ort;
    }

    public void setMinutes(int min) {
	this.minutes = min;
    }

    public int getOrt() {
	return this.ort;
    }

    public int getMinutes() {
	return this.minutes;
    }
}

normal müsste bei der Funktion doch das Objekt des Knoten zurückgegeben werden und weil es vom Typ Nachbar ist, müsste auch die Funktion getMinutes ausgeführt werden können.

Wenn jemand eine Lösung hierfür hat, wäre mir sehr geholfen!

Vielen Dank im Voraus

Gruß uwemann

[/code]
 
Ich hab den Code nur mal überflogen.

Du rufst mit d.getDate() eine Methode auf, die dir ein Objekt vom Typ Objekt zurückliefert und nicht vom Typ Nachbar, also hat dieses Objekt die Methode getMinutes nicht.

Caste doch einfach:
Code:
((Nachbar) d.getData()).getMinutes();

Sollte eigentlich gehen.
 
Hi,

danke für den Hinweis, hatte versucht zu casten, aber wie ich jetzt gemerkt hab, hatte ich die Klammern falsch gesetzt. Manchmal sind die Lösungen zu einfach.
Was 2 Klammern so ausmachen.

Nochmals danke.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben