diff --git a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/NaviApp.java b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/NaviApp.java index b3a7006..faee3f8 100644 --- a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/NaviApp.java +++ b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/NaviApp.java @@ -7,7 +7,9 @@ public class NaviApp { public static void main(String[] args) { Routeplaner map = new Routeplaner(); + System.out.println(); System.out.println(map.getNumberOfCities()); + System.out.println(); for (String waypoint : map.initializePlanning("Mannheim", "Wilhelmshaven")) System.out.println(waypoint); 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 9e1e71a..261ffd5 100644 --- a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/City.java +++ b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/City.java @@ -6,7 +6,6 @@ public class City { private String name; private int distance; private String predecessor; - private boolean visited; private TreeSet neighbors = new TreeSet<>(); @@ -31,6 +30,7 @@ public class City { if (distance < this.distance) { this.distance = distance; this.predecessor = predecessor; + System.out.println(name + " " + distance + " <- " + predecessor); } } @@ -42,14 +42,6 @@ public class City { this.distance = distance; } - public boolean isVisited() { - return visited; - } - - public void setVisited() { - visited = true; - } - public String getPredecessor() { return predecessor; } @@ -57,7 +49,6 @@ public class City { private void reset() { distance = Integer.MAX_VALUE; predecessor = null; - visited = false; } } \ 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 7964d2e..24e4a98 100644 --- a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Routeplaner.java +++ b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Routeplaner.java @@ -20,9 +20,9 @@ public class Routeplaner { public Deque initializePlanning(String start, String destination) { cities.get(start).setDistance(0); - + planRoute(start, destination); - + System.out.println(); System.out.println(); System.out.println("Route:"); @@ -30,49 +30,50 @@ public class Routeplaner { Deque hops = new ArrayDeque<>(); City dc = cities.get(destination); - + while (true) { hops.push(dc.getName() + " " + dc.getDistance() + " km"); - + if (dc.getName().equals(start)) break; - + dc = cities.get(dc.getPredecessor()); } - + return hops; } - + private void planRoute(String start, String destination) { System.out.println("Prüfe " + start); City sc = cities.get(start); - sc.setVisited(); - + if (sc == null || cities.get(destination) == null) throw new RuntimeException("Stadt nicht gefunden."); - + for (Street s : sc.getNeighbors()) { + if (s.isUsed()) + continue; + + s.setUsed(); + System.out.println(s.toString()); City nc = s.getDestination(); - - if (nc.isVisited()) { - System.out.println("schon besucht"); - continue; - } - + nc.checkAndChangeDistance(sc.getDistance() + s.getDistance(), sc.getName()); - + if (nc.getName().equals(destination)) { System.out.println("Route nach " + destination + " gefunden mit Entfernung: " + nc.getDistance()); } else { + System.out.println(); planRoute(nc.getName(), destination); + System.out.println(); } - + } - + } - + public int getNumberOfCities() { return cities.size(); } @@ -124,7 +125,7 @@ public class Routeplaner { } } - + private void loadConnections(int[][] matrix, HashMap cityLookup) throws IOException { final Scanner sc = new Scanner(new File("Routenplaner/resources/verb.txt")); @@ -142,10 +143,11 @@ public class Routeplaner { continue; } + System.out.println(start + " " + line + " " + matrix[cityLookup.get(start)][cityLookup.get(line)]); this.addStreet(start, line, matrix[cityLookup.get(start)][cityLookup.get(line)]); } // while - + sc.close(); } @@ -159,7 +161,7 @@ public class Routeplaner { } return cityNames; } - + private void addCity(String name) { cities.put(name, new City(name)); } @@ -171,5 +173,5 @@ public class Routeplaner { s1.addConnection(s2, distance); s2.addConnection(s1, distance); } - + } 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 9ba1877..ee300b8 100644 --- a/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Street.java +++ b/Routenplaner/src/de/th_mannheim/informatik/routenplaner/domain/Street.java @@ -5,6 +5,8 @@ public class Street implements Comparable { private final City destination; private final int distance; + private boolean used; + public Street(City start, City destination, int distance) { super(); @@ -39,6 +41,13 @@ public class Street implements Comparable { return distance; } + public boolean isUsed() { + return used; + } + + public void setUsed() { + used = true; + } public String toString() { return start.getName() + " -> " + destination.getName() + ": " + distance + " km"; }