L
loco007
Gast
Hallo,
und zwar habe ich folgendes Problem.
Ich habe eine Klasse die eine Verkettete Liste darstellt mir einem generischen Datentyp, diese implementiert ein Interface und ich habe eine Klasse Element in der die Werte der verketteten Liste stehen.
Hier sind die Klassen erstmal:
Soweit sogut, kompilieren tut das ganze, jetzt will ich das ganze testen:
Das funktioniert nicht dabei gibt er aus:
--> Element_int@1372a1a |--
Aber er soll ausgeben --> 1 |--
er gibt quasi nur einen Zeiger aus?!Wenn ich allerdings das hier benutze:
funktioniert das Ganze und er gibt 999 aus. Kann mir bitte jemand erklären was hier falsch läuft?
mfg
PS: tut mir leid dass die Formatierung der list.java kaputt ist :/
und zwar habe ich folgendes Problem.
Ich habe eine Klasse die eine Verkettete Liste darstellt mir einem generischen Datentyp, diese implementiert ein Interface und ich habe eine Klasse Element in der die Werte der verketteten Liste stehen.
Hier sind die Klassen erstmal:
Code:
interface ADTList<T>{
boolean isEmpty();
boolean isInList(T x);
int length();
T firstElement();
void insert(T x);
void append(T x);
void delete(T x);
void delete();
}
######################################
public class List<T> implements ADTList<T> {
// Datenfeld
private T item;
// Zeigerfeld
private List<T> next;
// Konstruktor, erzeugt leere Liste
public List() {
item = null;
next = null;
}
// Selektoren
public T getItem() {
return item;
}
public List<T> getNext() {
return next;
}
// ist die Liste leer?
public boolean isEmpty() {
return next == null;
}
public T firstElement() {
if (isEmpty())
return null;
else
return next.item;
}
public int length() {
if (isEmpty())
return 0;
else
return 1 + next.length();
}
// fügt x am Kopf ein
public void insert(T x) {
List<T> l = new List<T>();
l.item = x;
l.next = next;
next = l;
}
// hängt x an das Ende der Liste und liefert Teilliste: -->(x)
public void append(T x) {
if (isEmpty())
insert(x);
else
next.append(x);
}
// entfernt erstes x der Liste
// (... x y ...) wird zu (... y ...)
public void delete(T x) {
List<T> l = find(x);
if (l != null)
l.next = l.next.next;
}
// entfernt das erste Element der Liste
public void delete() {
if (!isEmpty())
next = next.next;
}
private List<T> find(T x) {
if (isEmpty())
return null;
else
if (firstElement().equals(x))
return this;
else
return next.find(x);
}
public boolean isInList(T x) {
return (find(x) != null);
}
public String toString() {
return (next == null ? " |--" : " --> " + next.item + next);
}
}
################################################
class Element {
private short wert;
public Element(){
}
public Element(short wert){
if (wert>=0&&wert<=10000)
this.wert = wert;
else
System.out.println("Der Wert liegt nicht im Grenzbereich: "+wert);
}
public void setValue (short wert) {
if (wert>=0&&wert<=10000){
this.wert = wert;
}
else{
System.out.println("Der Wert liegt nicht im Grenzbereich: "+wert);
}
}
public short getValue() {
return wert;
}
}
Soweit sogut, kompilieren tut das ganze, jetzt will ich das ganze testen:
Code:
short s = 1;
Element e = new Element(s);
System.out.println(e.getValue()); //gibt 1 aus
List<Element> li = new List<Element>();
li.insert(e);
System.out.println(li.toString());
Das funktioniert nicht dabei gibt er aus:
--> Element_int@1372a1a |--
Aber er soll ausgeben --> 1 |--
er gibt quasi nur einen Zeiger aus?!Wenn ich allerdings das hier benutze:
Code:
List<Integer> li = new List<Integer>();
li.insert(999);
System.out.println(li.toString());
funktioniert das Ganze und er gibt 999 aus. Kann mir bitte jemand erklären was hier falsch läuft?
mfg
PS: tut mir leid dass die Formatierung der list.java kaputt ist :/