Methoden Methoden anpassen und fehlende Funktionen hinzufügen

DagobertDuck

Bekanntes Mitglied
Dann wäre es ja nur:

Java:
    private Track getConnection(Point point, Track track) {
        for (Track tr : edges.get(point)) {
            if (!tr.equals(track)) {
                return tr;
            }
        }
        return null;
    }

Stimmt das so? Falls ja, kann der Code noch etwas verschönert werden (z. B. mittels Stream o. Ä.)?
 

Mika34

Bekanntes Mitglied
Dann wäre es ja nur:

Java:
    private Track getConnection(Point point, Track track) {
        for (Track tr : edges.get(point)) {
            if (!tr.equals(track)) {
                return tr;
            }
        }
        return null;
    }

Stimmt das so? Falls ja, kann der Code noch etwas verschönert werden (z. B. mittels Stream o. Ä.)?
In diesem Fall wird nun welcher Punkt der Methode übergeben? Der Verbindungspunkt von zwei Gleisen? Aber welche Gleise sind das im Konkreten?
 

mihe7

Top Contributor
In diesem Fall wird nun welcher Punkt der Methode übergeben? Der Verbindungspunkt von zwei Gleisen? Aber welche Gleise sind das im Konkreten?

Ist noch irgendwas unklar?

getConnection(point, track): liefert das Anschlussgleis von track, an Punkt point.
und
An einem Punkt laufen max. 2 Tracks zusammen. Der Anschlusstrack kann ja nur der von track verschiedene sein, sofern es ein solches überhaupt gibt.
sollte die Frage doch beantworten.
 

DagobertDuck

Bekanntes Mitglied
Super, danke. Jetzt fehlt also noch

Java:
public Point getPassedPoint(Point direction) {
        
}

Hier ist mir leider auch noch unklar, wie ich dies implementieren soll. Da diese Methode in der Klasse Track ist, verstehe ich nicht, wie ich an den letzten Punkt kommen soll, wenn dieser z. B. auf drei Gleisen weiter ist.
 

Mika34

Bekanntes Mitglied
Dann wäre es ja nur:

Java:
    private Track getConnection(Point point, Track track) {
        for (Track tr : edges.get(point)) {
            if (!tr.equals(track)) {
                return tr;
            }
        }
        return null;
    }

Stimmt das so? Falls ja, kann der Code noch etwas verschönert werden (z. B. mittels Stream o. Ä.)?
Somit ist track hier das Gleis auf welchem sich der Zugkopf befindet und Point der Verbindungspunkt der beiden Gleise.
Den Verbindungspunkt bekommt man dann genauso über das Objekt track, oder?
 

DagobertDuck

Bekanntes Mitglied
@mihe7 Also die Funktionsweise der Methode ist ja wie folgt:
  • Es muss zuerst geprüft werden, ob das Gleis horizontal oder vertikal ist.
  • Dann muss geschaut werden, in welche Richtung der Zug fährt (Richtungsvektor).
  • Je nachdem in welche Richtung und ob das Gleis horizontal oder vertikal ist, wird von der x- bzw. y-Koordinate des Zugkopfes die Länge abgezogen.
  • Falls dieser Punkt dann nicht auf der Track liegen sollte, wird der letzte Punkt des Gleises zurückgegeben.
Leider habe ich noch nicht ganz verstanden, wie ich den Richtungsvektor nun verwenden soll. Zuerst wird er mit der bereits gegebenen Methode normiert. Anschließend muss eine Fallunterscheidung stattfinden. Wie sieht diese aus?
 

mihe7

Top Contributor
Pseudo-Code
Java:
public Point getPassedPoint(Point direction) {
    Point v = new Point(switchedTo.x - startPoint.x, switchedTo.y - startPoint.y).toDirection(); 
    if (v.x != direction.x && v.y != direction.y) {
        throw ... // Richtungen passen nicht zusammen
    }
    return v.equals(direction) ? startPoint : switchedTo;
}
 

mihe7

Top Contributor
Somit ist track hier das Gleis auf welchem sich der Zugkopf befindet und Point der Verbindungspunkt der beiden Gleise.
Den Verbindungspunkt bekommt man dann genauso über das Objekt track, oder?
Ja, so in etwa: track ist halt das Gleis, zu dem man das anliegende Gleis haben möchte und point ist der Verbindungspunkt der Gleise.

Den Verbindungspunkt bekommt man mit Hilfe der Methode getPassedPoint vom track-Objekt, richtig - unter Angabe der Richtung, in die der Zug fährt.
 

Mika34

Bekanntes Mitglied
Pseudo-Code
Java:
public Point getPassedPoint(Point direction) {
    Point v = new Point(switchedTo.x - startPoint.x, switchedTo.y - startPoint.y).toDirection();
    if (v.x != direction.x && v.y != direction.y) {
        throw ... // Richtungen passen nicht zusammen
    }
    return v.equals(direction) ? startPoint : switchedTo;
}
Und die Methode gibt das Ende des Zuges an, wenn ich es richtig verstanden habe, oder?
 

DagobertDuck

Bekanntes Mitglied
Java:
public void putTrain(Train train, Point point, Point directionVector) throws LogicException {
    ...
    Track track = findTrack(point).get();
    List<Track> requiredTracks = getRequiredTracks(track, point, directionVector, trainLength);
    // For loop to save the train to all required tracks
}

Wie geht es nun weiter? Reicht es bereits die Methode getRequiredTracks einer Liste zuzuweisen? Falls ein benötigtes Gleis nicht frei sein sollte wird dadurch doch auch eine Exception geworfen, oder nicht?
Jetzt muss der Zug gespeichert werden. Reicht dazu eine Map<Point, Train>, um den Richtungsvektor und den Zug abzuspeichern?
 

mihe7

Top Contributor
Und die Methode gibt das Ende des Zuges an, wenn ich es richtig verstanden habe, oder?
Nein, das macht die Methode, die ich #88 skizziert habe. Aber die Methode braucht getPassedPoint und getConnection.

Ganz einfach
Code:
   WWW-WWWL
+-----+------+----+
a     b      c    d
 Tr1    Tr2   Tr3

Du siehst hier drei Tracks Tr1, Tr2 und Tr3 mit den Endpunkten a, b, c und d gezeichnet als schöne Linien und + als Endpunkte :) Außerdem sieht man den Zug, dessen Waggons mit W und dessen Lok mit L dargestellt sind. Das "-" zwischen den Waggons soll nur verdeutlichen, dass an der Stelle nur ein Punkt ist.

findTrack() liefert zum Punkt "L" (Lok) erst einmal den Track Tr2. Als nächstes müssen wir wissen, wo Tr2 aufhört. Uns interessiert aber nicht der Endpunkt von Tr2, den die Lok erst noch erreicht (c), sondern der Endpunkt, an dem die Lok bereits vorbeigefahren ist (b). Das ist die Aufgabe von getPassedPoint().

Jetzt brauchen wir den Track, der an Punkt "b" an Tr2 angeschlossen ist. Das ist Aufgabe von getConnection().
 

Mika34

Bekanntes Mitglied
Nein, das macht die Methode, die ich #88 skizziert habe. Aber die Methode braucht getPassedPoint und getConnection.

Ganz einfach
Code:
   WWW-WWWL
+-----+------+----+
a     b      c    d
Tr1    Tr2   Tr3

Du siehst hier drei Tracks Tr1, Tr2 und Tr3 mit den Endpunkten a, b, c und d gezeichnet als schöne Linien und + als Endpunkte :) Außerdem sieht man den Zug, dessen Waggons mit W und dessen Lok mit L dargestellt sind. Das "-" zwischen den Waggons soll nur verdeutlichen, dass an der Stelle nur ein Punkt ist.

findTrack() liefert zum Punkt "L" (Lok) erst einmal den Track Tr2. Als nächstes müssen wir wissen, wo Tr2 aufhört. Uns interessiert aber nicht der Endpunkt von Tr2, den die Lok erst noch erreicht (c), sondern der Endpunkt, an dem die Lok bereits vorbeigefahren ist (b). Das ist die Aufgabe von getPassedPoint().

Jetzt brauchen wir den Track, der an Punkt "b" an Tr2 angeschlossen ist. Das ist Aufgabe von getConnection().
Jetzt habe ich es nun gerafft. Somit ist es totaler Quatsch in diesem Stadium den "Popo" von dem Zug herauszufinden, da dies gerade nicht zu berwerkstelligen ist, wenn ich das richtig verstanden habe
 

DagobertDuck

Bekanntes Mitglied
Diese If-Abfrage ist hier nicht ganz richtig, oder? Wo kommt sie stattdessen hin?

Java:
    private List<Track> getRequiredTracks(...)
            throws ...{
        ...
        while (length > 0) {
            ...
            if (!getConnection(passed, currentTrack).isPresent()) {
                throw new ...("no connection track found");
            }
            currentTrack = getConnection(passed, currentTrack).get();
        }
        return requiredTracks;
    }
 

DagobertDuck

Bekanntes Mitglied
Das hat sich erledigt, sorry. Meine erstelltes Gleisnetz war inkorrekt.

Allerdings habe ich noch folgendes Problem:

add track (1,1) -> (5,1) add track (1,1) -> (1,-3) create engine steam T3 Emma 1 true true create coach passenger 1 true true create coach passenger 1 true true add train 1 T3-Emma add train 1 W1 add train 1 W2

Soweit so gut. Wenn ich nun allerdings:

put train 1 at (1,1) in direction 1,0

eingebe, kommt folgende Fehlermeldung:

Error, directions do not match

Was stimmt mit der Methode also noch nicht?
 

Mika34

Bekanntes Mitglied
Ja, wie Dein inTrack halt auch. Die findTrack-Methode muss natürlich Track zurückgeben.

Die Methode dürfte in Track etwa so aussehen (Fehler nicht ausgeschlossen):
Java:
public boolean canNavigateTo(Point p) {
    if (switchedTo == null) { return false; }
    Point p1 = getStartPoint();
    Point p2 = switchedTo;
    if (p1.equals(p) || p2.equals(p)) { return true; }

    return p1.x == p.x && p.x == p2.x && (p.y-p1.y)/(p2.y-p1.y) == 0 && (p2.y-p1.y)/(p.y-p1.y) > 0 ||
        p1.y == p.y && p.y == p2.y && (p.x-p1.x)/(p2.x-p1.x) == 0 && (p2.x-p1.x)/(p.x-p1.x) > 0;
}

Und findTrack in RailNetwork (oder wo auch immer die Tracks verwaltet werden):
Java:
    private Track findTrack(Point point) {
        for (Track track : tracks.values()) {
            if (track.canNavigateTo(point)) {
                return track;
            }
        }
        return null;
    }
@mihe7 welche Funktion hat hier getStartPoint() als Funktion und switchedTo jeweils als Punkte?
 

Mika34

Bekanntes Mitglied
Nein, dazu brauchst Du doch keine Tiefensuche. Ganz einfach: edges liefert Dir zu einem gegebenen Punkt alle Gleise, die dort starten oder enden.

Java:
//erstmal eine Abkürzung einführen
private boolean hasConnections(Point p) {
    return !edges.computeIfAbsent(p, x -> new ArrayList<>()).isEmpty();
}

public void addTrack(Track track) throws LogicException {
    if (edges.isEmpty() || hasConnections(track.getStartPoint()) ||
            track.getEndPoints().stream().anyMatch(this::hasConnections)) {
        // track hinzufügen
    } else {
        // Kein Anschlusspunkt vorhanden
    }
}


Das ergibt wenig Sinn. Ich wiederhole mich: "edges liefert Dir zu einem gegebenen Punkt alle Gleise, die dort starten oder enden. "


Ja, computeIfAbsent sorgt nur dafür, dass Du nicht null sondern einen bestimmten Wert (hier: eine leere Liste) erhältst. Aus einer Liste etwas entfernen, das in der Liste nicht vorhanden ist, ist kein Problem.

Du kannst natürlich auch explizit vorher prüfen, ob der Punkt in der Map vorhanden ist:
Java:
    public void removeTrack(int trackId) {
        Track track = tracks.get(trackId);
        if (track == null) {
            return; // oder Exception, da Track nicht existiert
        }
        tracks.remove(trackId);
        for (Point p : track.getPoints()) {
            if (edges.containsKey(p)) {
                edges.get(p).remove(track);
            }
        }
    }
Und @mihe7 welche Datenstruktur wurde hier für edges gewählt, denn wenn ich versuche meinen CartesianPoint in eine HasMap zu speichern, bekomme ich einen Error um die Ohren gehauen. Ich schätze mal aufbauend auf den letztem 100 Beiträge das der Key hier nicht die ID ist, sondern der Punkt, aber welcher genau?
Java:
    private HashMap<CartesianPoint, RawTrack> tracksReadyForDriving = new HashMap<CartesianPoint, RawTrack>();
    private boolean hasConnections(CartesianPoint p) {
        return !tracksReadyForDriving.computeIfAbsent(p, x -> new ArrayList<>()).isEmpty();
    }
So sieht es aktuell bei mir aus
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Und @mihe7 welche Datenstruktur wurde hier für edges gewählt
Map<Point, List<Track>>

sondern der Punkt, aber welcher genau?
Der in den Tracks vorkommt. Wenn Du einen Track A-B hast, wird der Track in der Map sowohl unter A als auch unter B eingetragen. Bei einer Weiche A,B,C wir der Track in der Map unter allen drei Punkten eingetragen. edges liefert also für einen Punkt alle Tracks, die an diesem Punkt starten oder enden.
 

mihe7

Top Contributor
Soweit so gut. Wenn ich nun allerdings:

put train 1 at (1,1) in direction 1,0

eingebe, kommt folgende Fehlermeldung:

Error, directions do not match

Was stimmt mit der Methode also noch nicht?

Guter Testfall... bei der Suche nach dem Track wird noch nicht berücksichtigt dass es Punkte gibt, die Tracks miteinander verbinden (also in edges als Schlüssel dienen). In dem Fall muss nicht über die values gesucht aber der Track über die Richtung bestimmt werden.
 

mihe7

Top Contributor
@mihe7 welche Funktion hat hier getStartPoint() als Funktion und switchedTo jeweils als Punkte?
Der Track speichert eine Liste von Punkten, dabei ist der erste Punkt der Startpunkt, der Rest stellt mögliche Endpunkte dar. Bei einem normalen Gleis werden also zwei Punkte gespeichert, bei einer Weiche gibt es mehr Endpunkte.

Das ist sozusagen die statische Sicht auf ein Schienenelement, die den grundsätzlichen Aufbau des Netzes beschreibt: es gibt eine Weiche A,B,C, d. h. an Punkt A gehen zwei Gleise ab, eines nach B und eines nach C.

Aus dynamischer Sicht (also im Betrieb) ist es aber so, dass zu jedem Zeitpunkt jeder Track einen Startpunkt mit genau einem Endpunkt verbinden muss - und dieser Endpunkt wird mit switchedTo angegeben. Bei normalen Gleisen steht der fest, bei Weichen kann er eingestellt werden.

getStartPoint() liefert also den Startpunkt (erster Punkt der Liste) und switchedTo den aktuellen(!) Endpunkt.
 

Mika34

Bekanntes Mitglied
Map<Point, List<Track>>


Der in den Tracks vorkommt. Wenn Du einen Track A-B hast, wird der Track in der Map sowohl unter A als auch unter B eingetragen. Bei einer Weiche A,B,C wir der Track in der Map unter allen drei Punkten eingetragen. edges liefert also für einen Punkt alle Tracks, die an diesem Punkt starten oder enden.
Aber der Key der Map ist jedoch der eindeutig definierte Startpunkt eines Gleis bzw. einer Weiche, wenn ich es richtig verstanden habe.

Könntest du mir bitte noch sagen, ob getStartPoint() und switchedTo() einfache Getter einer Map sind und wie man diese geschickt modellieren kann? Denn in meiner jetzigen Modellierung sieht das doch sehr schrecklich aus
 

mihe7

Top Contributor
Aber der Key der Map ist jedoch der eindeutig definierte Startpunkt eines Gleis bzw. einer Weiche, wenn ich es richtig verstanden habe.
Nein, in der Map sind alle Punkte der Tracks Schlüssel.

Könntest du mir bitte noch sagen, ob getStartPoint() und switchedTo() einfache Getter einer Map sind und wie man diese geschickt modellieren kann? Denn in meiner jetzigen Modellierung sieht das doch sehr schrecklich aus
Nein, das sind Getter der Klasse Track. Sollte auf Seite 1 dieses Threads erklärt sein.
 

DagobertDuck

Bekanntes Mitglied
Guter Testfall... bei der Suche nach dem Track wird noch nicht berücksichtigt dass es Punkte gibt, die Tracks miteinander verbinden (also in edges als Schlüssel dienen). In dem Fall muss nicht über die values gesucht aber der Track über die Richtung bestimmt werden.
Ach so, OK. Wie kann ich das jetzt noch am besten geschickt implementieren?
 

mihe7

Top Contributor
Du nimmst edges.get(trainStartPoint) und suchst in der Liste nach Tracks, deren Richtungsvektor in wenigstens einer Komponente mit dem gegebenen Richtungsvektor übereinstimmen.
 

DagobertDuck

Bekanntes Mitglied
@mihe7 Wie komme ich an den Richtungsvektor der Track? Und soll Point passed = currentTrack.getPassedPoint(direction); regulär danach zugewiesen werden, oder soll es in die For Schleife rein?
 
Zuletzt bearbeitet:

Mika34

Bekanntes Mitglied
Nein, dazu brauchst Du doch keine Tiefensuche. Ganz einfach: edges liefert Dir zu einem gegebenen Punkt alle Gleise, die dort starten oder enden.

Java:
//erstmal eine Abkürzung einführen
private boolean hasConnections(Point p) {
    return !edges.computeIfAbsent(p, x -> new ArrayList<>()).isEmpty();
}

public void addTrack(Track track) throws LogicException {
    if (edges.isEmpty() || hasConnections(track.getStartPoint()) ||
            track.getEndPoints().stream().anyMatch(this::hasConnections)) {
        // track hinzufügen
    } else {
        // Kein Anschlusspunkt vorhanden
    }
}


Das ergibt wenig Sinn. Ich wiederhole mich: "edges liefert Dir zu einem gegebenen Punkt alle Gleise, die dort starten oder enden. "


Ja, computeIfAbsent sorgt nur dafür, dass Du nicht null sondern einen bestimmten Wert (hier: eine leere Liste) erhältst. Aus einer Liste etwas entfernen, das in der Liste nicht vorhanden ist, ist kein Problem.

Du kannst natürlich auch explizit vorher prüfen, ob der Punkt in der Map vorhanden ist:
Java:
    public void removeTrack(int trackId) {
        Track track = tracks.get(trackId);
        if (track == null) {
            return; // oder Exception, da Track nicht existiert
        }
        tracks.remove(trackId);
        for (Point p : track.getPoints()) {
            if (edges.containsKey(p)) {
                edges.get(p).remove(track);
            }
        }
    }
Wieso tut man den Track dann in eine Liste speichern?
Ich dachte man speichert einen Track als value und als Key dann jeweils die Endpunkte A,B bzw. A,B,C
tracksReadyForDriving.put(originPoint, newlyBuildTrack);
 

Mika34

Bekanntes Mitglied
Edit: Das Model sieht es so vor... Ok.
@DagobertDuck was tut diese Methode? getTrackConnections(). Die gibt nicht die Start und Endpunkte zurück, das macht die getPoints Methode. ie gibt das Anschlussgleis zurück, kann das sein?
 

DagobertDuck

Bekanntes Mitglied
Danke.

Hier ist mein derzeitiger Code:
Java:
            Point passed;
            for (Track trackConnection : getTrackConnections(startPoint)) {
                Point switchedTo = trackConnection.getSwitchedTo();
                Point trackDirection = trackConnection.toDirection(new Point(switchedTo.x - startPoint.x,
                        switchedTo.y - startPoint.y));
                if (trackDirection.x == direction.x
                        || trackDirection.y == direction.y) {
                    passed = trackConnection.getPassedPoint(direction);
                } else {
                    // Throw exception
                }
            }
            // Error: variable 'passed' might not have been initialised
            length -= position.distanceTo(passed);

Irgendwas stimmt damit ja noch nicht. Was fehlt noch bzw. was habe ich falsch gemacht?
 

mihe7

Top Contributor
Äh, wo ist denn der Rest der Methode? Außerdem musst Du passed initialisieren (darum der Compilerfehler), das else rausnehmen und durch ein if nach der Schleife ersetzen:
Java:
Point passed = null;
for (...) {
}
if (passed == null) {
    Throw exception
}
...
 

DagobertDuck

Bekanntes Mitglied
Leider bekomme ich beim Testen gültiger Eingaben immer noch die Fehlermeldung. Es muss doch sicher etwas an der Methode getPassedPoint geändert werden, oder nicht?
 

Mika34

Bekanntes Mitglied
trackConnection.getSwitchedTo(); Gibt an welcher Endpunkt gewählt wurde. Hierbei ist es egal, ob es eine Weiche oder ein normaler Track ist, da man immer setSwitchedTo() ausführt. Vertue ich mich oder stimmt dies?
 

mihe7

Top Contributor
Ihr müsst Euch das mal etwas visualisieren. Sucht Euch z. B. Bilder von Modelleisenbahnen. Da gibt es Schienenelemente wie normale Gleise und Weichen. Nichts anderes beschreibt Track, nur dass Track davon abstrahiert, indem es ein normales Gleis wie eine Weiche behandelt, die nur 2 Enden hat und somit nicht verstellbar ist.
 

DagobertDuck

Bekanntes Mitglied
getPassedPoint()
Java:
public Point getPassedPoint(Point direction) {
    if (v.x != direction.x && v.y != direction.y) {
        throw ...("directions do not match");
    }
    return v.equals(direction) ? startPoint : switchedTo;
}

findTracks()
Java:
    private Track findTrack(Point point) {
        for (Track track : tracks.values()) {
            if (track.isPassable(point)) {
                return track;
            }
        }
        return null;
    }

getRequiredTracks()
Java:
    private List<Track> getRequiredTracks(Track startTrack, Point startPoint, Point direction, long trainLength) {
        Track currentTrack = startTrack;
        Point position = startPoint;
        List<Track> requiredTracks = new ArrayList<>();
        long length = trainLength;
        while (length > 0) {
            if (currentTrack == null || requiredTracks.contains(currentTrack)) {
                throw new ...("train cannot be positioned");
            }
            requiredTracks.add(currentTrack);
            Point passed = null;
            for (Track trackConnection : getTrackConnections(startPoint)) {
                 Point v = trackConnection.toDirection(new Point(switchedTo.x - startPoint.x, switchedTo.y - startPoint.y));
                if (v.x == direction.x || v.y == direction.y) {
                    passed = trackConnection.getPassedPoint(direction);
                }
            }
            if (passed == null) {
                throw new ...("direction vector not valid");
            }
            length -= position.distanceTo(passed);
            position = passed;
            if (!getConnection(passed, currentTrack).isPresent()) {
                throw new ...("no connection track found");
            }
            currentTrack = getConnection(passed, currentTrack).get();
        }
        return requiredTracks;
    }
 

mihe7

Top Contributor
Der Code
Java:
            Point passed = null;
            for (Track trackConnection : getTrackConnections(startPoint)) {
                 Point v = trackConnection.toDirection(new Point(switchedTo.x - startPoint.x, switchedTo.y - startPoint.y));
                if (v.x == direction.x || v.y == direction.y) {
                    passed = trackConnection.getPassedPoint(direction);
                }
            }
            if (passed == null) {
                throw new ...("direction vector not valid");
            }
gehört nicht in getRequiredTracks(). Ändere die Methode wieder zurück.

Es geht darum, dass die Methode
private Track findTrack(Point point) {
nicht berücksichtigt, dass point ein Punkt sein kann, der zwei Gleise miteinander verbindet. Die Methode braucht also noch die Richtung des Zuges, um ggf. das richtige Gleis auswählen zu können - und natürlich den Code, der sich darum kümmert.

D. h. WENN point Schlüssel von edges ist, DANN muss das richtige Gleis anhand der Richtung gewählt werden, SONST muss der Punkt über die Werte von edges (also alle Tracks) gesucht werden.
 

Mika34

Bekanntes Mitglied
Java:
Point passed = null;
            for (Track trackConnection : getTrackConnections(startPoint)) {
                 Point v = trackConnection.toDirection(new Point(switchedTo.x - startPoint.x, switchedTo.y - startPoint.y));
                if (v.x == direction.x || v.y == direction.y) {
                    passed = trackConnection.getPassedPoint(direction);
                }
            }
            if (passed == null) {
                throw new ...("direction vector not valid");
            }
In welcher Methode ist dies dann sonst zu prüfen. Es bietet sich theoretisch ja nur hier die Möglichkeit dafür, oder nicht?
 

mihe7

Top Contributor
Leute, bitte überlegt doch mal ein wenig selber.

In welcher Methode ist dies dann sonst zu prüfen. Es bietet sich theoretisch ja nur hier die Möglichkeit dafür, oder nicht?
In der Form nirgends.

Ich verstehe aber nicht, was das mit meiner Fehlermeldung zu tun hat? Die wird doch durch getPassedPoint() ausgelöst (?).
getPassedPoint stellt fest, dass der Spaß mit dem gegebenen Track nicht funktioniert. Der Punkt ist, dass von einem falschen Gleis ausgegangen wird, das von findTrack geliefert wird.
 

DagobertDuck

Bekanntes Mitglied
Leute, bitte überlegt doch mal ein wenig selber.


In der Form nirgends.


getPassedPoint stellt fest, dass der Spaß mit dem gegebenen Track nicht funktioniert. Der Punkt ist, dass von einem falschen Gleis ausgegangen wird, das von findTrack geliefert wird.
Da hast du recht, das habe ich gar nicht beachtet. Leider funktioniert es nur immer noch nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Methoden methoden an generischen klassentyp anpassen Allgemeine Java-Themen 5
D Interface, aber die Methoden bleiben teilweise gleich Allgemeine Java-Themen 35
B Leere vererbte Interface-Methoden Allgemeine Java-Themen 8
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
N abstracte klassen methoden Allgemeine Java-Themen 32
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
Y Java Methoden unterschiedliche Zahlenreihen Allgemeine Java-Themen 2
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
R Statistische Methoden (Mathematik) Aufgabe Allgemeine Java-Themen 9
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
L mehrere Methoden Allgemeine Java-Themen 19
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
B StAX Parser - mehrere Methoden, ein XML Allgemeine Java-Themen 4
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
A Automatisches Methoden Laufzeiten logging? Allgemeine Java-Themen 7
M Quellcode von Java-Methoden Allgemeine Java-Themen 9
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Q-bert Methoden Methoden in Java Allgemeine Java-Themen 13
D Methoden Java-Aufgabe Allgemeine Java-Themen 2
M Compiler-Fehler Methoden-Referenz Allgemeine Java-Themen 5
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
S 2 methoden mit gleichen namen und ein Interface Allgemeine Java-Themen 9
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
E OOP Objekte und Methoden Allgemeine Java-Themen 1
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
T Java Array in Methoden Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
A Methoden verändern Allgemeine Java-Themen 12
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
J Best Practice Testen von protected Methoden Allgemeine Java-Themen 7
L Methoden "Schiffe versenken" Quellcode in Methoden umwandeln Allgemeine Java-Themen 6
G Matrix reduzieren zwei Methoden Allgemeine Java-Themen 2
Sogomn Best Practice "Doppelte" Methoden Allgemeine Java-Themen 3
Paul15 String Methoden Allgemeine Java-Themen 7
G Methoden BMI -Wert Aufgabe(Methoden) Allgemeine Java-Themen 4
F Testen von Methoden Allgemeine Java-Themen 3
S "Vererben" statischer Felder/Methoden Allgemeine Java-Themen 4
F Methoden in der Enumeration Klasse Allgemeine Java-Themen 1
S Methoden ohne Methodenkopf ?! Allgemeine Java-Themen 5
T Überschreiben von Methoden Allgemeine Java-Themen 6
M Methoden werden in falscher Reihenfolge bearbeitet Allgemeine Java-Themen 10
S Methoden Methoden überschreiben Allgemeine Java-Themen 3
N Threads statische Methoden in Threads Allgemeine Java-Themen 5
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
A also definition von klassen und string methoden und algorithmik Allgemeine Java-Themen 13
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5
S Methoden Frage Allgemeine Java-Themen 2
R Wie kann man diese Methoden in arrays etablieren? Allgemeine Java-Themen 8
M Methoden in Rescources speichern Allgemeine Java-Themen 4
G Synchronisation nicht statischer Methoden Allgemeine Java-Themen 4
A Vererbung finale Methoden überschreiben Allgemeine Java-Themen 24
A Methoden parallelisieren? Allgemeine Java-Themen 2
C Methoden Übernahme von standart nativen Methoden? Allgemeine Java-Themen 9
B Zusammenfassen verschiedener ähnlicher Methoden Allgemeine Java-Themen 8
K JNI: Methoden aus unterschiedlichen Threads aufrufen Allgemeine Java-Themen 3
P Unterschiedliche Clone- Methoden Allgemeine Java-Themen 5
MQue Spezialfrage Überschreiben von Methoden Allgemeine Java-Themen 14
B Methoden Alle Methoden und Variablen aus Java-Dateien auslesen. Allgemeine Java-Themen 7
MiMa Rekursive Methoden Allgemeine Java-Themen 3
S Programm das alle aufgerufenen Methoden ausgibt..? Allgemeine Java-Themen 6
F ListIterator (next & previous methoden) Allgemeine Java-Themen 5
W Frage zu Refactoring statischer Methoden Allgemeine Java-Themen 4
M Methoden/Klassen für andere Projekte Allgemeine Java-Themen 4
T Methoden per String-Namen aufrufen Allgemeine Java-Themen 2
C Kapselung Warum graift man auf Variablen nur über Methoden und nich direkt zu? Allgemeine Java-Themen 10
M Methoden Static Methoden und Thread??? Allgemeine Java-Themen 4
A Methoden ohne Referenzen finden Allgemeine Java-Themen 9
turmaline OOP zwei gleiche Methoden mit kleinen Unterschieden Allgemeine Java-Themen 15
G JUnit Test Methoden in anderen Thread verlagern Allgemeine Java-Themen 4
K Auf Methoden der Runnable Klasse zugreifen Allgemeine Java-Themen 2
S Methoden Class.forName() >> Methoden - Reihenfolge Allgemeine Java-Themen 5
D Passende Name für Methoden finden Allgemeine Java-Themen 3
D Wann sollte ich statische Methoden und Variablen benutzen? Allgemeine Java-Themen 44
A Methoden laufen im Konstruktor, außerhalb allerdings nicht Allgemeine Java-Themen 2
M Generische Methoden mit Java und globale Variablen Allgemeine Java-Themen 9
GianaSisters ArrayList in Methoden übergeben Allgemeine Java-Themen 3
S static methoden Allgemeine Java-Themen 9
J coole Methoden Allgemeine Java-Themen 6
R Methoden in einem Thread unterschiedlich oft ausführen Allgemeine Java-Themen 4
A OOP: Überschreiben/Implementierung von Methoden Allgemeine Java-Themen 5
P Methoden und Werte Allgemeine Java-Themen 17

Ähnliche Java Themen


Oben