diff --git a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/NaviApp.java b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/NaviApp.java index 27a4e51..056c71e 100644 --- a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/NaviApp.java +++ b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/NaviApp.java @@ -8,6 +8,8 @@ public class NaviApp { Routeplaner map = new Routeplaner(); System.out.println(map.getNumberOfCities()); + + map.planRoute("Mannheim", "Trier"); } } diff --git a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/City.java b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/City.java index 7e10cc0..f739409 100644 --- a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/City.java +++ b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/City.java @@ -4,11 +4,14 @@ import java.util.TreeSet; public class City { private String name; + private int distance; + private String predecessor; private TreeSet neighbors = new TreeSet<>(); public City(String name) { this.name = name; + reset(); } public void addConnection(City stadt2, int distance) { @@ -23,4 +26,20 @@ public class City { return neighbors; } + public void checkAndChangeDistance(int distance, String predecessor) { + if (distance < this.distance) { + this.distance = distance; + this.predecessor = predecessor; + } + } + + public int getDistance() { + return distance; + } + + private void reset() { + distance = Integer.MAX_VALUE; + predecessor = null; + } + } \ No newline at end of file diff --git a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Routeplaner.java b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Routeplaner.java index 05f196a..999bc7b 100644 --- a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Routeplaner.java +++ b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Routeplaner.java @@ -18,11 +18,26 @@ public class Routeplaner { public String[] planRoute(String start, String destination) { + City sc = cities.get(start); + + if (sc == null || cities.get(destination) == null) + throw new RuntimeException("Stadt nicht gefunden."); + + for (Street s : sc.getNeighbors()) { + System.out.println(s.toString()); + + City nc = s.getDestination(); + nc.checkAndChangeDistance(s.getDistance(), sc.getName()); + + if (nc.getName().equals(destination)) { + System.out.println("Route nach " + destination + " gefunden mit Entfernung: " + nc.getDistance()); + } + + } + return null; } - - public int getNumberOfCities() { return cities.size(); } diff --git a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Street.java b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Street.java index 2a7b3f6..9ba1877 100644 --- a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Street.java +++ b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Street.java @@ -31,7 +31,7 @@ public class Street implements Comparable { return start; } - public City getTarget() { + public City getDestination() { return destination; }