ich wollte eine Warteschlange vom Typ java.util.LinkedList nutzen, deren Elemente vom Typ Car sind
das dick geschriebene war die orginalklasse. habe zuersteinmal das grundgerüst der linkedList in diese klasse eingebunden.
habe dann in einer weiteren klasse:
die methoden der linkedlist vom typ queue implementiert.
ist das soweit richtig???
jetzt muss ich die elemente vom typ car machen, weiß aber nicht welchen fehler ich mache!
kann mir jemand weiterhelfen?
Code:
import java.awt.Color;
public class Car
{
Color c;
int id;
static int counter = 0;
//Element
Car element;
//Zeiger auf Vorgänger und Nachfolger
Car prev,
next;
[b]public Car()
{
c = randomColor();
id = counter ++;[/b]
element = null;
prev = null;
next = null;
}
private Color randomColor()
{
return new Color((int)(255*Math.random()), (int)(255*Math.random()), (int)(255*Math.random()));
}
public Color getColor()
{
return c;
}
public int getID()
{
return id;
}
//Konstruktor
public Car(Car o, Car p, Car n)
{
element = o;
prev = p;
next = n;
}//Node
//Element neu belegen
public void setElement(Car o)
{
element = o;
}
//Zugriff auf Element
public Car getElement()
{
return element;
}
//Nachfolger setzen
public void setNext(Car n)
{
next = n;
}
//Zugriff auf Nachfolger
public Car getNext()
{
return next;
}
//Vorgaenger neu belegen
public void setPrevious(Car p)
{
prev = p;
}
//Zugriff auf Vorgänger
public Car getPrevious()
{
return prev;
}
}
habe dann in einer weiteren klasse:
Code:
import java.util.LinkedList;
/*
* noch leere Klasse Road soll der Thread implementiert werden
*
*/
public class RoadTest extends Thread
{
// Listenanfang
private Car head = null;
//Listenende
private Car tail = null;
public RoadTest()
{
//beide Knoten werden initialisiert
head = new Car();
tail = new Car();
//Anfang und Ende "verknüpfen"
head.setNext(tail);
tail.setPrevious(head);
tail.setNext(tail);
}//DList
//fuegt ein Element am Ende der Liste an
public void addLast(Car c)
{
//Knoten zwischen tail und dessen Vorgaenger einfuegen
Car l = tail.getPrevious();
Car n = new Car(c,l,tail);
l.setNext(n);
tail.setPrevious(n);
}//addLast
//entfernt das vordere Element und gibt es zurück
public Car removeFirst() throws QueueEmptyException
{
if(isEmpty())
throw new QueueEmptyException();
//Zugriff ueber Listenanfang
Car o = head.getNext().getElement();
//Knoten zwischen head und Nachfolger entfernen
head.setNext(head.getNext().getNext());
head.getNext().setPrevious(head);
return o;
}//removeFirst
//liefert die Anzahl der Objekte
public int size()
{
int s = 0;
Car n = head;
//Knoten zaehlen
while(n.getNext() != null)
{
s++;
n = n.getNext();
}//while
return s;
}//size
//testet, ob die Liste leer ist
public boolean isEmpty()
{
//kleine Knoten zwischen head und tail
return head.getNext() == tail;
}//isEmpty
//gibt alle Elemente in der Liste als String zurück
public String toString()
{
String result="";
for (Car n = this.head.getNext(); n != null; n = n.getNext())
{
result += n.getElement();
if (n.getNext() != null)
result += " , ";
}//for
return result;
}//toString
public LinkedList getRight()
{
return null;
}
public LinkedList getMiddle()
{
return null;
}
}//class
die methoden der linkedlist vom typ queue implementiert.
ist das soweit richtig???
jetzt muss ich die elemente vom typ car machen, weiß aber nicht welchen fehler ich mache!
kann mir jemand weiterhelfen?