diff --git a/MaNav22/.settings/.gitignore b/MaNav22/.settings/.gitignore new file mode 100644 index 0000000..3b1537c --- /dev/null +++ b/MaNav22/.settings/.gitignore @@ -0,0 +1 @@ +/org.eclipse.jdt.core.prefs diff --git a/MaNav22/lib/jsoup-1.13.1.jar b/MaNav22/lib/jsoup-1.13.1.jar new file mode 100644 index 0000000..7fbd5e2 Binary files /dev/null and b/MaNav22/lib/jsoup-1.13.1.jar differ diff --git a/MaNav22/resources/etab.html b/MaNav22/resources/etab.html new file mode 100644 index 0000000..751d4cb --- /dev/null +++ b/MaNav22/resources/etab.html @@ -0,0 +1,1795 @@ + + + + +Entfernungstabelle Deutschland + + + + + +

Entfernungstabelle Deutschland

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 EntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelleEntfernungstabelle
 Aachen  570  532  637  369  739  651  446  123  240  721  466  330  740  475  354  345  307  556  145    60  573  625  496  284  650  206  715  472  256  683  570  642  321  590  408  255  505  418  367 
 Augsburg 570   239  593  715  574  472  422  601  365  649  340  335  117  720  600  221  432  820  430  538  431  184  530  297    61  620  729  180  580  232  167  782  356  742  149  475    83  825  243 
 Bayreuth 532  239   352  572  339  237  187  494  264  414  457  187  334  596  460  337  278  693  345  431  198  372  295  329  244  520  494    74  635  273  159  547  446  562  264  485  252  682  147 
 Berlin 637  593  352   375  125  214  288  480  564    91  800  474  686  279  258  670  367  343  610  553  184  739  131  657  596  450  130  426  410  625  511  237  745  200  631  725  604  485  490 
 Bremen 369  715  572  375   496  478  351  249  450  467  722  388  856  110  118  595  288  205  415  315  367  780  251  541  766  170  353  590  120  796  690  277  590  228  645  524  660  110  490 
 Cottbus 739  574  339  125  496   138  320  608  585  119  800  490  686  430  378  670  502  511  633  683  244  739  233  660  596  579  304  426  528  478  440  382  768  359  631  748  604  598  485 
 Dresden 651  472  237  214  478  138   220  581  485  177  700  390  586  492  385  570  402  573  533  583  140  639  228  560  496  597  366  325  590  378  340  444  668  421  531  648  504  660  385 
 Erfurt 446  422  187  288  351  320  220   367  268  366  533  180  515  376  289  403  135  459  318  373  170  567  209  339  425  384  438  264  373  459  344  435  453  480  435  433  447  451  298 
 Essen 123  601  494  480  249  608  581  367   256  600  524  297  736  350  258  397  188  454  160    75  475  655  384  327  646    87  599  465  135  676  560  525  359  474  472  292  535  290  360 
 Frankfurt/Main 240  365  264  564  450  585  485  268  256   661  262    95  502  509  362  135  190  599  125  185  407  430  445  106  412  280  704  235  340  330  326  686  188  629  200  235  310  500  130 
 Frankfurt/Oder 721  649  414    91  467  119  177  366  600  661   873  547  759  382  331  743  440  446  683  626  211  812  202  730  669  523  279  499  483  559  584  317  815  306  704  799  677  558  647 
 Freiburg 466  340  457  800  722  800  700  533  524  262  873   357  490  759  624  130  457  852  333  435  642  175  700  195  400  548  942  378  556  480  480  935  312  881  207  360  268  716  318 
 Fulda 330  335  187  474  388  490  390  180  297    95  547  357   477  410  272  238  105  504  227  277  311  390  346  166  382  304  605  202  290  412  295  577  290  525  260  345  270  450  100 
 Garmisch-Part. 740  117  334  686  856  686  586  515  735  502  759  490  477   869  742  360  575  960  580  675  513  155  615  444    89  763  813  267  755  293  195  866  508  855  300  611  181  915  389 
 Hamburg 475  720  596  279  110  430  492  376  350  509  382  759  410  869   154  640  312    85  520  381  387  806  271  580  772  260  235  616  200  816  710  140  690  120  668  624  686  220  512 
 Hannover 354  600  460  258  118  378  385  289  258  362  331  624  272  742  154   500  238  238  410  295  252  656  136  433  647  190  395  476  135  676  567  327  553  269  526  487  536  225  369 
 Karlsruhe 345  221  337  670  595  670  570  403  397  135  743  130  238  360  640  500   330  731  206  310  515  273  576    58  270  421  815  253  429  459  353  802  188  754    81  233  160  589  195 
 Kassel 307  432  278  367  288  502  402  135  188  190  440  457  105  575  312  238  330   405  243  243  278  490  247  265  482  200  508  309  190  509  404  477  383  428  360  361  370  345  209 
 Kiel 556  820  693  343  205  511  573  459  454  599  446  852  504  960    85  238  731  405   600  493  485  895  369  671  882  348  280  702  297  911  800  194  778  139  762  714  715  315  605 
 Koblenz 145  430  345  610  415  633  533  318  160  125  683  333  227  580  520  410  206  243  600   110  454  501  496  145  521  243  760  350  300  580  445  687  203  635  270  128  381  460  248 
 Köln   60  538  431  553  315  683  583  373    75  185  626  435  277  675  381  295  310  243  493  110   488  604  417  247  578  144  646  415  200  611  510  562  283  521  367  217  484  360  300 
 Leipzig 573  431  198  184  367  244  140  170  475  407  211  642  311  513  387  252  515  278  485  454  488   564  108  497  436  450  322  266  410  461  349  375  585  364  471  568  444  485  410 
 Lindau 625  184  372  739  780  739  639  567  655  430  812  175  390  155  806  656  273  490  895  501  604  564   727  363  194  683  879  301  733  364  310  932  480  908  216  417  126  888  309 
 Magdeburg 496  530  295  131  251  233  228  209  384  445  202  700  346  615  271  136  576  247  369  496  417  108  727   505  522  342  269  360  291  563  449  316  611  311  573  599  537  366  460 
 Mannheim 284  297  329  657  541  660  560  339  327  106  730  195  166  444  580  433    58  265  671  145  247  497  363  505   347  350  761  248  410  444  343  731  117  686  138  146  214  570  162 
 München 650    81  244  596  766  596  496  425  646  412  669  400  382    89  772  647  270  482  882  521  578  436  194  522  347   668  731  162  655  180  106  771  413  773  210  522  124  825  294 
 Münster 206  620  520  450  170  579  597  384    87  280  523  548  304  763  260  190  421  200  348  243  144  450  683  342  350  668   529  490    60  695  585  471  427  398  502  361  560  220  385 
 Neubrandenburg  715  729  494  130  353  304  366  438  599  704  279  942  605  813  235  395  815  508  280  760  646  322  879  269  761  731  529   567  436  762  644  103  870  187  764  871  741  474  752 
 Nürnberg 472  180    74  426  590  426  325  264  465  235  499  378  202  267  616  476  253  309  702  350  415  266  301  360  248  162  490  567   485  205  105  615  356  604  213  309  188  645  108 
 Osnabrück 256  580  635  410  120  528  590  373  135  340  483  556  290  755  200  135  429  180  297  300  200  410  733  291  410  655    60  436  485   746  585  367  478  317  557  412  610  160  390 
 Passau 683  232  273  625  796  478  378  459  676  330  559  480  412  293  816  676  459  509  911  580  611  461  364  563  444  180  695  762  205  746   128  814  562  803  400  618  310  860  323 
 Regensburg 570  167  159  511  690  440  340  344  560  326  584  480  295  195  710  567  353  404  800  445  510  349  310  449  343  106  585  644  105  585  128   702  455  699  286  504  208  740  207 
 Rostock 642  782  547  237  277  382  444  435  525  686  317  935  577  866  140  327  802  477  194  687  562  375  932  316  731  771  471  103  615  367  814  702   848    90  809  821  791  424  702 
 Saarbrücken 321  356  446  745  590  768  668  453  359  188  815  312  290  508  690  553  188  383  778  203  283  585  480  611  117  413  427  870  356  478  562  455  848   822  210  103  303  633  309 
 Schwerin 590  742  562  200  228  359  421  480  474  629  306  881  525  855  120  269  754  428  139  635  521  364  908  311  686  773  398  187  604  317  803  699    90  822   789  763  771  335  612 
 Stuttgart 408  149  264  631  645  631  531  435  472  200  704  207  260  300  668  526    81  360  762  270  367  471  216  573  138  210  502  764  213  557  400  286  809  210  789   307  100  717  157 
 Trier 255  475  485  725  524  748  648  433  292  235  799  360  345  611  624  487  233  361  714  128  217  568  417  599  146  522  361  871  309  412  618  504  821  103  763  307   418  515  351 
 Ulm 505    83  252  604  660  604  504  447  535  310  677  268  270  181  686  536  160  370  715  381  484  444  126  537  214  124  560  741  188  610  310  208  791  303  771  100  418   770  180 
 Wilhelmshaven 418  825  682  485  110  598  660  451  290  500  558  716  450  915  220  225  589  345  315  460  360  485  888  366  570  825  220  474  645  160  860  740  424  633  335  717  515  770   554 
 Würzburg 367  243  147  490  490  485  385  298  360  130  647  318  100  389  512  369  195  209  605  248  300  410  309  460  162  294  385  752  108  390  323  207  702  309  612  157  351  180  554  
+
+
+
+
Seite Drucken
+
+Ein Service von www.auslandversicherungen.de. + + \ No newline at end of file diff --git a/MaNav22/resources/verb.txt b/MaNav22/resources/verb.txt new file mode 100644 index 0000000..c8fb9f1 --- /dev/null +++ b/MaNav22/resources/verb.txt @@ -0,0 +1,214 @@ +Aachen +Köln +Trier + +Augsburg +München +Garmisch-Part. +Nürnberg +Ulm +Regensburg +Lindau + +Bayreuth +Nürnberg +Würzburg +Erfurt + +Berlin +Cottbus +Leipzig +Frankfurt/Oder +Magdeburg +Schwerin +Rostock +Magdeburg +Neubrandenburg + +Bremen +Hamburg +Hannover +Osnabrück + +Cottbus +Dresden +Frankfurt/Oder +Berlin + +Dresden +Cottbus +Erfurt +Bayreuth + +Erfurt +Magdeburg +Fulda +Bayreuth +Kassel + +Essen +Köln +Münster +Kassel + +Frankfurt/Main +Mannheim +Würzburg +Koblenz +Fulda +Kassel + +Frankfurt/Oder +Dresden +Berlin + +Freiburg +Karlsruhe +Stuttgart +Lindau + +Fulda +Kassel +Erfurt +Würzburg + +Garmisch-Part. +München +Lindau +Ulm + +Hamburg +Kiel +Bremen +Magdeburg + +Hannover +Osnabrück +Bremen +Hamburg +Magdeburg + +Karlsruhe +Stuttgart +Mannheim +Saarbrücken + +Kassel +Frankfurt/Main +Essen +Fulda +Erfurt + +Kiel +Hamburg +Schwerin + +Koblenz +Köln +Trier +Frankfurt/Main +Fulda +Kassel + +Köln +Koblenz +Trier + +Leipzig +Berlin +Erfurt +Magdeburg + +Lindau +Ulm +Garmisch-Part. + +Magdeburg +Hannover +Berlin +Schwerin +Hamburg + +Mannheim +Karlsruhe +Frankfurt/Main +Saarbrücken +Trier +Koblenz + +München +Augsburg +Lindau +Bayreuth +Würzburg +Passau + +Münster +Osnabrück +Essen + +Neubrandenburg +Berlin +Rostock +Schwerin + +Nürnberg +München +Würzburg +Bayreuth +Stuttgart + +Osnabrück +Hannover +Kassel +Münster +Bremen +Wilhelmshaven + +Passau +Regensburg +München + +Regensburg +Nürnberg +München +Passau + +Rostock +Schwerin +Neubrandenburg + +Saarbrücken +Trier +Mannheim +Frankfurt/Main +Karlsruhe + +Schwerin +Rostock +Hamburg +Berlin + +Stuttgart +Karlsruhe +Ulm +Würzburg + +Trier +Saarbrücken +Koblenz + +Ulm +Stuttgart +Augsburg +Lindau +Nürnberg +Würzburg + +Wilhelmshaven +Bremen +Osnabrück + +Würzburg +Osnabrück +Bremen \ No newline at end of file diff --git a/MaNav22/src/de/hsma/informatik/maNav/NaviApp.java b/MaNav22/src/de/hsma/informatik/maNav/NaviApp.java new file mode 100644 index 0000000..5f0e952 --- /dev/null +++ b/MaNav22/src/de/hsma/informatik/maNav/NaviApp.java @@ -0,0 +1,14 @@ +package de.hsma.informatik.maNav; + +import de.hsma.informatik.maNav.domain.planer.Routenplaner; + +public class NaviApp { + + public static void main(String[] args) { + + Routenplaner karte = new Routenplaner(); + karte.printRoute("Mannheim", "München"); + + } // main + +} diff --git a/MaNav22/src/de/hsma/informatik/maNav/domain/graph/Stadt.java b/MaNav22/src/de/hsma/informatik/maNav/domain/graph/Stadt.java new file mode 100644 index 0000000..08ad119 --- /dev/null +++ b/MaNav22/src/de/hsma/informatik/maNav/domain/graph/Stadt.java @@ -0,0 +1,26 @@ +package de.hsma.informatik.maNav.domain.graph; + +import java.util.TreeSet; + +public class Stadt { + private String name; + + private TreeSet nachbarn = new TreeSet<>(); + + public Stadt(String name) { + this.name = name; + } + + public void addVerbindung(Stadt stadt2, int entfernung) { + nachbarn.add(new Verbindung(this, stadt2, entfernung)); + } + + public String getName() { + return name; + } + + public TreeSet getNachbarn() { + return nachbarn; + } + +} \ No newline at end of file diff --git a/MaNav22/src/de/hsma/informatik/maNav/domain/graph/Verbindung.java b/MaNav22/src/de/hsma/informatik/maNav/domain/graph/Verbindung.java new file mode 100644 index 0000000..b8b974c --- /dev/null +++ b/MaNav22/src/de/hsma/informatik/maNav/domain/graph/Verbindung.java @@ -0,0 +1,46 @@ +package de.hsma.informatik.maNav.domain.graph; + +public class Verbindung implements Comparable { + private final Stadt start; + private final Stadt ziel; + + private final int entfernung; + + public Verbindung(Stadt start, Stadt ziel, int entfernung) { + super(); + this.start = start; + this.ziel = ziel; + this.entfernung = entfernung; + } + + @Override + public int compareTo(Verbindung v) { + int diff = this.entfernung - v.entfernung; + + if (diff != 0) + return diff; + + if (this.start.equals(v.start) && this.ziel.equals(v.ziel)) + return 0; + + // wg. Nutzung von TreeSet + return 1; + } + + public Stadt getStart() { + return start; + } + + public Stadt getZiel() { + return ziel; + } + + public int getEntfernung() { + return entfernung; + } + + public String toString() { + return start.getName() + " -> " + ziel.getName() + ": " + entfernung + " km"; + } + +} diff --git a/MaNav22/src/de/hsma/informatik/maNav/domain/planer/PlanerStadt.java b/MaNav22/src/de/hsma/informatik/maNav/domain/planer/PlanerStadt.java new file mode 100644 index 0000000..0880372 --- /dev/null +++ b/MaNav22/src/de/hsma/informatik/maNav/domain/planer/PlanerStadt.java @@ -0,0 +1,72 @@ +package de.hsma.informatik.maNav.domain.planer; + +import java.util.TreeSet; + +import de.hsma.informatik.maNav.domain.graph.Stadt; +import de.hsma.informatik.maNav.domain.graph.Verbindung; + +public class PlanerStadt implements Comparable { + private int entfernung = Integer.MAX_VALUE; + + private Stadt stadt; + private PlanerStadt vorgänger = null; + private TreeSet nachbarn; + + public PlanerStadt(Stadt stadt) { + this.stadt = stadt; + nachbarn = (TreeSet)stadt.getNachbarn().clone(); + } + + public Verbindung getAndRemoveNächstenNachbarn() { + return nachbarn.pollFirst(); + } + + public boolean setEntfernung(int entfernung, PlanerStadt vorgänger) { + if (entfernung < this.entfernung) { + this.entfernung = entfernung; + this.vorgänger = vorgänger; + + return true; + } + + return false; + } + + @Override + public int compareTo(PlanerStadt gs) { + int diff = this.entfernung - gs.entfernung; + + if (diff != 0) + return diff; + + if (this.stadt.getName().equals(gs.stadt.getName())) + return 0; + + return 1; + } + + public int getEntfernung() { + return entfernung; + } + + public void setEntfernung(int entfernung) { + this.entfernung = entfernung; + } + + public Stadt getStadt() { + return stadt; + } + + public PlanerStadt getVorgänger() { + return vorgänger; + } + + public void setVorgänger(PlanerStadt vorgänger) { + this.vorgänger = vorgänger; + } + + public String toString() { + return stadt.getName(); + } + +} diff --git a/MaNav22/src/de/hsma/informatik/maNav/domain/planer/Routenplaner.java b/MaNav22/src/de/hsma/informatik/maNav/domain/planer/Routenplaner.java new file mode 100644 index 0000000..d71578e --- /dev/null +++ b/MaNav22/src/de/hsma/informatik/maNav/domain/planer/Routenplaner.java @@ -0,0 +1,149 @@ +package de.hsma.informatik.maNav.domain.planer; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Scanner; +import java.util.TreeSet; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.select.Elements; + +import de.hsma.informatik.maNav.domain.graph.Stadt; +import de.hsma.informatik.maNav.domain.graph.Verbindung; + +public class Routenplaner { + private HashMap städte = new HashMap<>(); + + public Routenplaner() { + loadData(); + } + + public void printRoute(String start, String dest) { + TreeSet kandidaten = new TreeSet<>(); + + PlanerStadt dsst = new PlanerStadt(städte.get(start)); + dsst.setEntfernung(0); + kandidaten.add(dsst); + + do { + Verbindung nächste = dsst.getAndRemoveNächstenNachbarn(); + + if (nächste != null) { + PlanerStadt dzst = new PlanerStadt(nächste.getZiel()); + if (dzst.setEntfernung(dsst.getEntfernung() + nächste.getEntfernung(), dsst)) { + System.out.println(nächste.toString() + " (" + (dsst.getEntfernung() + nächste.getEntfernung()) +")"); + + kandidaten.add(dzst); + } + } else { + System.out.println("erledigt: " + kandidaten.pollFirst()); + } + + dsst = kandidaten.first(); + } while(!dsst.getStadt().getName().equals(dest)); + + System.out.println(); + System.out.println(dsst.getStadt().getName() + " " + dsst.getEntfernung()); + + while (dsst.getVorgänger() != null) { + System.out.println(dsst.getVorgänger().getStadt().getName() + " " + dsst.getVorgänger().getEntfernung()); + dsst = dsst.getVorgänger(); + } + } + + private void loadData() { + final String CITIES_DOCUMENT_PATH = "resources/etab.html"; + + int[][] matrix; + HashMap cityLookup = new HashMap<>(); + + File input = new File(CITIES_DOCUMENT_PATH); + Document doc; + try { + doc = Jsoup.parse(input, "UTF-8"); + + String[] cities = parseCities(doc); + matrix = new int[cities.length][cities.length]; + + Elements cells = doc.select("td"); + int xIndex = 0; + int yIndex = -1; + + for (int i = cities.length + 1; i < cells.size(); i++) { + if(i%(cities.length + 1) == 0) { + xIndex = 0; + yIndex++; + + this.addCity(cities[yIndex]); + cityLookup.put(cities[yIndex], yIndex); + + continue; + } + + String cityName1 = cities[xIndex]; + String cityName2 = cities[yIndex]; + + xIndex++; + + if(cityName1.equals(cityName2)) + continue; + + matrix[xIndex - 1][yIndex] = Integer.parseInt(cells.get(i).text()); + } // for + + loadConnections(matrix, cityLookup); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + + private void loadConnections(int[][] matrix, HashMap cityLookup) throws IOException { + final Scanner sc = new Scanner(new File("resources/verb.txt")); + + String start = null; + while (sc.hasNextLine()) { + String zeile = sc.nextLine(); + + if (start == null) { + start = zeile; + continue; + } + + if (zeile.isBlank()) { + start = null; + continue; + } + + this.addConnection(start, zeile, matrix[cityLookup.get(start)][cityLookup.get(zeile)]); + + } // while + } + + private String[] parseCities(Document doc) { + Elements cities = doc.select("td > b"); + int cityAmount = cities.size(); + String[] cityNames = new String[cityAmount]; + + for (int i = 0; i < cities.size(); i++) { + cityNames[i] = cities.get(i).text(); + } + return cityNames; + } + + private void addCity(String name) { + städte.put(name, new Stadt(name)); + } + + private void addConnection(String name1, String name2, int entfernung) { + Stadt s1 = städte.get(name1); + Stadt s2 = städte.get(name2); + + s1.addVerbindung(s2, entfernung); + s2.addVerbindung(s1, entfernung); + } + +}