Neuer Start- und Endpunkt kann nur an bereits vorhandenen Start- oder Endpunkt anliegen

DagobertDuck

Bekanntes Mitglied
Guten Abend,

ich bin gerade an folgendem Teil einer Aufgabe dran:

Mit Ausnahme vom ersten Gleis muss ein Start- oder Endpunkt immer an einem Start- bzw. Endpunkt eines vorhanden Gleis anliegen. An einem Punkt an einem Gleis kann immer nur ein anderes Gleis angeschlossen werden.

Ich habe jetzt wie folgt versucht zu überprüfen, ob ein Gleis, welches aus Start- und Endpunkt besteht, an einem bereits vorhandenen Start- oder Endpunkt anliegt.

Bildlich kann man sich das ganze wie einen Graphen vorstellen, also z. B.

A-B | | C D

Was ist an folgendem Code falsch?

Java:
    public boolean checkAdjacency(Point startPoint, Point endPoint) {
        for (Track track : tracks.values()) {
            if (track.getStartPoint().equals(startPoint) || track.getEndPoint().equals(endPoint)) {
                return true;
            }
        }
        return false;
    }
 
Ups... Da fällt mir gerade ein, dass man ja vier Fälle überprüfen muss.

Kann man das etwas vereinfachen?
Java:
if (track.getStartPoint().equals(startPoint) || track.getEndPoint().equals(endPoint) || track.getStartPoint().equals(endPoint) || track.getEndPoint().equals(startPoint)) {
 
Naja, es kommt darauf an, was die Methode ganz genau tun soll. Aktuell liest sie sich in Prosa genau so:

"Gegeben ein Startpunkt und ein Endpunkt, prüfe, ob es einen Track gibt, dessen Startpunkt gleich dem Parameter-Startpunkt ist oder ob es ein Track gibt, dessen Endpunkt gleich dem Parameter-Endpunkt ist."

Was du hierbei nicht betrachtest, ist die Reihenfolge von Start- und Endpunkt. Möglicherweise ist der Startpunkt eines Gleises/Tracks auch der Parameter-Endpunkt oder der Endpunkt eines Gleises/Tracks ist der Parameter-Startpunkt. Wenn das allerdings nicht sein kann, wüsste ich nicht, warum an der Methode etwas falsch sein soll.
Warum glaubst du denn, dass an der Methode etwas falsch ist?
Möglicherweise funktioniert auch Point.equals() nicht korrekt?
 

Zurück
Oben