Type mismatch: cannot convert from Graph.Edge to ArrayList<Graph.Edge>

BC_KO3

Mitglied
Java:
        ArrayList<Edge> allEdges = new ArrayList<>();

        public ArrayList<Edge> getEdge (int i) {
            return allEdges[i];
        }

Warum geht das nicht, was muss ich machen, damit es geht? Warum behauptet Java ArrayList sei keine ArrayList??
 
wie ich bereits bgeschrieben hatte
Java:
public Edge getEdge (int i) {
            return allEdges[i];
        }
 
Der Zugriff auf ein Element einer ArrayList über den Index, erfolgt mittels der Methode get().

https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#get(int)

Der Zugriff über die eckige Klammer gilt für ein Array.

Und was den Rückgabewert angeht: Wenn du ein einzelnes Element aus der Liste zurückgeben möchtest, dann ist der Rückgabetyp auch vom Typ der enthaltenen Elemente (das was @Joreyk geschrieben hat). Willst du eine Liste von Elementen zurückgeben, dann ist es z. B. wie im ersten Beitrag oder mit Verwendung des Interfaces List<Edge>.
 
Der Zugriff auf ein Element einer ArrayList über den Index, erfolgt mittels der Methode get().

https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#get(int)

Der Zugriff über die eckige Klammer gilt für ein Array.

Und was den Rückgabewert angeht: Wenn du ein einzelnes Element aus der Liste zurückgeben möchtest, dann ist der Rückgabetyp auch vom Typ der enthaltenen Elemente (das was @Joreyk geschrieben hat). Willst du eine Liste von Elementen zurückgeben, dann ist es z. B. wie im ersten Beitrag oder mit Verwendung des Interfaces List<Edge>.
Nope:
"Type mismatch: cannot convert from Graph.Edge to ArrayList<Graph.Edge>Java(16777235)"

Java:
 public ArrayList<Edge> getEdge (int i) {
            return allEdges.get(i);
        }
 
Ach so, wie bekomme ich dann die Ecken in eine Liste rein, wenn ich getEdge aufrufe?
Du sprichst in Rätseln! Deine Methode holt ein Element aus der Liste heraus. Für "rein" gibt es z. B. add() (siehe Doku, Link ist oben).

Insofern kannst du das mit get() erhaltene Element mit add() einer anderen Liste hinzufügen, falls es das ist, was du möchtest.
 
Ich würde gerne diese Methode aufrufen.
Java:
public int Gewicht (int start, int dest) {
            int weight = 0;
            ArrayList<Edge> edges = getEdge(s);
    
            for(Edge edge : edges){
                if(edge.destination == dest){
                    weight = edge.weight;
                    break;
                }
            }
            return weight;
        }
 
Das muss (start) heißen.
Ok. Es soll eine Methode getEdges() geben, die mehrere Edges aus einer Liste liefern soll und genau einen Integer-Parameter hat. Welche Edges sollen mit diesem Parameter aus der Liste von Edges zurück gegeben werden ? Alle vom Anfang bis zu dieser Position, alle von dieser Position bis zum Ende? Was ganz anderes?
 
Hier mal ein Beispiel, welches jedes n-te Element aus einer Liste als Ergebnisliste liefert.

Java:
public List<Edge> getEdges(final int n) {
    ArrayList<Edge> result = new ArrayList<>();
    for (int i = 0; i < allEdges.size(); i += n) {
        result.add(allEdges.get(i));
    }
    return result;
}
 
Ok. Es soll eine Methode getEdges() geben, die mehrere Edges aus einer Liste liefern soll und genau einen Integer-Parameter hat.

Keine Ahnung. Glaube nicht. Ich will das Gewicht von einem Startpunkt bis zu einem Endpunbkt haben
 
Ich will genau einen integer Wert da raus haben und zwar das Gewicht. Von Startpunkt zu Endepunkt. Jede Kante hat ein Gewicht. Ich will das Gewicht von genau einer Kante, die als Start und Endpunkt deffiniert ist
 
Ich will genau einen integer Wert da raus haben und zwar das Gewicht.
Dann geht durch alle Werte in der Liste, bis du das Element mit dem gewünschten Gewicht gefunden hast und gib das zurück. Wenn du an einem bestimmten Index beginnen willst dann fang halt mit diesem Element an. Wie du an den Inhalt an einem bestimmten Index kommst, das weißt du ja.

Alternativ nimm deine for-each-Schleife auf den Bereich, den du mit sublist() aus der Liste extrahieren kannst.

Hättest du einmal die Doku gelesen, wie mehrfach erwähnt, dann hättest du da auch selbst drauf kommen können.
 
Zuletzt bearbeitet:
Es stehen schon mehrere Beispiele hier, wie man alle Elemente durchgeht.
for-each hast du selbst schon genannt, Temi hat dir ein Beispiel mit einer for-to schleife gezeigt. Die musst du nur überarbeiten, bzw. mit 1 ansteuern.
Was sie dann intern mit jedem Element macht, musst du noch selbst programmieren.

Du kannst hier nicht erwarten, von irgend jemandem eine ansatzweise "richtige" Lösung zu hören, wenn du noch nicht mal weißt, was du willst und was "richtig" ist.
Formulier das Ganze doch mal als Arbeitsanweisung mit Worten aus (Schritt für Schritt).
Wenn das funktioniert, musst du es nur noch in Java übersetzen. Aber du musst schon ausdrücken können, was eigentlich gemacht werden soll.
 

Zurück
Oben