was habe ich Falsch gemacht ?

AmonSchmidt

Mitglied
public class List {

private class Node {
private T element = null;
private Node next = null;

private Node(T element, Node next) {
this.element = element;
this.next = next;
}

private Node(int element) {
this.element = element;
}
}

private Node head = null;

public void prepend(int object) {
head = new Node(object, head);
}

public void append(T object) {
if(head == null) {
head = new Node(object);
return;
}
Node current = head;
while(current.next != null) {
current = current.next;
}
current.next = new Node(object);
}

public T first() {
return get(0);
}

public int get(T index) {
Node current = head;
for(int i = 0; i < index; i++) {
current = current.next;
}
return current.element;
}

public int size() {
Node current = head;
int size = 0;
for(; current != null; size++) {
current = current.next;
}
return size;
}

public String toString() {
String string = "";
while(head != null) {
string += head.element + " -> ";
head = head.next;
}
return string;
}
So sieht mein Programm aus aber beim ausführen kommen fehler wie "symbol T" wird nicht gefunden kann mir einer sagen wo ich was falsch gemacht habe?
 
verwende code tags das ist beim beitrag erstellen das </> zeichen

du hast vergessen T zu deklarieren
Java:
public class List <T>{
 
Als ersten Fehler würde ich nennen: Du hast Code nicht in Code Tags gepostet. Wenn Du Code im Forum Posten willst, dann nutze bitte Code Tags. Dazu einfach oberhalb des Eingabefeldes den Knopf </> nutzen und dann den Code im PopUp hinein kopieren. Alternativ kannst Du vor den Code [CODE] und danach [/CODE] schreiben.

Und wenn Du in einer Klasse Generics nutzen willst, dann musst Du das auch mit angeben, also etwas wie public class Node <T> {
 
verwende code tags das ist beim beitrag erstellen das </> zeichen

du hast vergessen T zu deklarieren
Java:
public class List <T>{
habe es verbessert aber nun kommen diese fehler :
int cannot be converted to T
this.element = element;
^
where T is a type-variable:
T extends Object declared in class List
List.java:20: error: incompatible types: int cannot be converted to T
head = new Node(object, head);
^
where T is a type-variable:
T extends Object declared in class List
List.java:25: error: incompatible types: T cannot be converted to int
head = new Node(object);
^
where T is a type-variable:
T extends Object declared in class List
List.java:32: error: incompatible types: T cannot be converted to int
current.next = new Node(object);
^
where T is a type-variable:
T extends Object declared in class List
List.java:36: error: incompatible types: int cannot be converted to T
return get(0);
^
where T is a type-variable:
T extends Object declared in class List
List.java:41: error: bad operand types for binary operator '<'
for(int i = 0; i < index; i++) {
^
first type: int
second type: T
where T is a type-variable:
T extends Object declared in class List
List.java:44: error: incompatible types: T cannot be converted to int
return current.element;
^
where T is a type-variable:
T extends Object declared in class List
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
7 errors
 
Hier z. B.
Java:
private Node(int element) {
    this.element = element;
}

Der Parameter ist vom Typ int und die Instanzvariable ist vom Typ T und genau das steht auch in der Fehlermeldung: int cannot be converted to T


EDIT: Kann es sein, dass es sich ursprünglich um eine Liste für int-Werte handelte, die jetzt generisch werden soll? Dann hast du wohl ein paar ints vergessen...
 
Zuletzt bearbeitet:
Und hier: public int get(T index) hast du den ursprünglichen int-Parameter zu T geändert. Ein Index bleibt aber ein int-Wert, während natürlich der Rückgabewert nicht mehr vom Typ int ist.
 

Zurück
Oben