ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
447
447
EMPFEHLEN
-
Guten Abend Zusammen
Ich habe hier einen Quellcode und komme einfach nicht weiter.
Eigentlich sollte solange nach einer nächsten Stadt gefragt werden, bis die Startstadt wieder eingegeben wird. Aber das Programm bricht nach der Eingabe der 2. Stadt ab. Könnt Ihr mir vielleicht einen Tip geben, woran das liegt?
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
public class Route { // (0)AAchen, (1)Berlin, (2)Chemnitz, (3)Dresden, (4)Erfurt, (5)Flensburg, (6)Garmisch, (7)Hamburg int[][] entfernung = { {000, 640, 580, 650, 440, 649, 735, 490}, //(0)Aachen {640, 000, 260, 190, 300, 450, 671, 290}, //(1)Berlin {580, 260, 000, 70, 150, 670, 480, 520}, //(2)Chemnitz {650, 190, 70, 000, 220, 650, 610, 502}, //(3)Dresden {440, 300, 150, 220, 000, 550, 490, 400}, //(4)Erfurt {649, 450, 670, 650, 550, 000, 1020, 160}, //(5)Flensburg {735, 671, 480, 610, 490, 1020, 000, 869}, //(6)Garmisch {490, 290, 520, 502, 400, 160, 869, 000} //(7)Hamburg }; //Array in dem die Staede gespeichert sind. String[] stadt = new String[8]; { stadt[0] = ("Aachen"); stadt[1] = ("Berlin"); stadt[2] = ("Chemnitz"); stadt[3] = ("Dresden"); stadt[4] = ("Erfurt"); stadt[5] = ("Flensburg"); stadt[6] = ("Garmisch"); stadt[7] = ("Hamburg"); } /*Methode anbieten * der Benutzer kann wählen, ob er die Standartroute, * oder die vorgegebene Route möchte */ public final void anbieten() { System.out.println("Staedte: Aachen, Berlin, Chemnitz, Dresden, " //zeigt die verfügbaren Städte an + "Erfurt, Flensburg, Garmisch, Hamburg"); // Auswahl der Städteliste mit Hilfe der Konsole String antwort; antwort = Konsole. getInputString("Moechten Sie diese Staedteliste nutzen? j/n"); if (antwort.equals("j")){ //Bei Eingabe "j" wird die Standartroute ausgegeben System.out.println ("Antwort: " + antwort); alleDaten (); } else if (antwort.equals("n")){ //Bei Eingabe "n" wird die Methode "list" ausgeführt //Der Benutzer kann seine eigene Route zusammenstellen list (); } else { //Wird weder "j" noch "n" eingegeben wird mitgeteilt, dass System.out.println("Bitte geben Sie j oder n ein"); // Eingabe ungültig ist, eine erneute Eingabe ist möglich antwort = Konsole. getInputString("Moechten Sie diese Staedteliste nutzen? j/n"); } } public int standardroute(){ int summe = //Berechnung der Kilometeranzahl der Standartroute (entfernung[1][6]+ entfernung[6][7]+ //Die Felder des Arrays werden nach vorgegebener Reihenfolge summiert entfernung[7][3]+ entfernung[3][6]+ entfernung[6][0]+ entfernung[0][5]+ entfernung[5][1]); return summe; } public void alleDaten(){ // Route wird übersichtlich auf der Konsole ausgegeben System.out.println("Start: Berlin"); System.out.println("Von Berlin nach Garmisch: " + entfernung[1][6] + "km."); System.out.println("Von Garmisch nach Hamburg: " + entfernung[6][7] + "km."); System.out.println("Von Hamburg nach Dresden: " + entfernung[7][3] + "km."); System.out.println("Von Dresden nach Garmisch: " + entfernung[3][6] + "km."); System.out.println("Von Garmisch nach Aachen: " + entfernung[6][0] + "km."); System.out.println("Von Aachen nach Flensburg: " + entfernung[0][5] + "km."); System.out.println("Von Flensburg nach Berlin: " + entfernung[5][1] + "km."); System.out.println("Gesamtstrecke: " + standardroute()); } //Methode zum erstellen einer eigenen Route public void list() { int s = 0; //Start int ns = 0; //naechste Stadt int ls = 0; //letzte Stadt int strecke = 0; stadt [s] = Konsole.getInputString("Bitte geben Sie die Startstadt ein."); System.out.println("Staedte: Aachen, Berlin, Chemnitz, Dresden, " + "Erfurt, Flensburg, Garmisch, Hamburg"); stadt [ls] = stadt [s]; //die Route wird mit der 1. Stadt beendet System.out.println("Start in: " + stadt [s]); stadt [ns] = Konsole.getInputString("Bitte geben Sie die nächste Stadt ein"); if (!stadt [s].equals(stadt [ns])) { // es können so lange Städt eingegeben werden, bis die // 1. Stadt eingegeben wird // übersichtliche Ausgabe der Auswahl für den Benutzer auf der Konsole System.out.println("Von " + stadt [ls] + " nach " + stadt [ns]); // Entfernung zwischen den beiden Städten wird als Zwischensumme berechnet // und auf der Konsole ausgegeben int i = Integer.valueOf(stadt [ls]); int j = Integer.valueOf(stadt [ns]); System.out.println(entfernung[i][j] + " km."); // Die gesamten Zwischensummen der Entfernungen werden summiert strecke = strecke + entfernung[i][j]; stadt [ls] = stadt [ns]; // es wird immer die zuletzt eingegebene Stadt // mit der aktuellen Stadt ausgegeben und berechnet } else { //wenn der Benutzer die Startstadt eingibt, wird die System.out.println("Gesamtstrecke: " + strecke); //Eingabe beendet und die Kilometerzahl der gesamten //Strecke ausgegeben } } //Die Methoden werden getestet public static void main(String[] args) { Route test = new Route(); test.anbieten(); } }
Geändert von Sophie (20.06.10 um 20:30 Uhr) Grund: War etwas unuebersichtlich
-
Dein Quelltext enthält keine Schleife, also wie sollte da etwas mehrfach durchgeführt werden (abgesehen von Rekursion)?
Und hier noch ein Vorschlag (ohne deinen Code näher angesehen zu haben). In der Methode list()
Code java:1 2 3 4 5 6 7
stadt [ns] = Konsole.getInputString("Bitte geben Sie die nächste Stadt ein"); if (!stadt [s].equals(stadt [ns])) { // } else { // }
Ersetzen durch
Code java:1 2 3 4 5
while(!stadt [s].equals(stadt [ns])) { stadt [ns] = Konsole.getInputString("Bitte geben Sie die nächste Stadt ein"); // } //
Geändert von CPoly (20.06.10 um 20:36 Uhr)
-
Oh, sorry, ich hatte eine Schleife.
Ich probiere nur schon so lange eine Lösung zu finden, dass ich die wohl irgendwann versehentlich gelöscht habe. Zeile 133
Es funktioniert aber auch nicht mit dieser Schleife.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
public class Route { // (0)AAchen, (1)Berlin, (2)Chemnitz, (3)Dresden, (4)Erfurt, (5)Flensburg, (6)Garmisch, (7)Hamburg int[][] entfernung = { {000, 640, 580, 650, 440, 649, 735, 490}, //(0)Aachen {640, 000, 260, 190, 300, 450, 671, 290}, //(1)Berlin {580, 260, 000, 70, 150, 670, 480, 520}, //(2)Chemnitz {650, 190, 70, 000, 220, 650, 610, 502}, //(3)Dresden {440, 300, 150, 220, 000, 550, 490, 400}, //(4)Erfurt {649, 450, 670, 650, 550, 000, 1020, 160}, //(5)Flensburg {735, 671, 480, 610, 490, 1020, 000, 869}, //(6)Garmisch {490, 290, 520, 502, 400, 160, 869, 000} //(7)Hamburg }; //Array in dem die Staede gespeichert sind. String[] stadt = new String[8]; { stadt[0] = ("Aachen"); stadt[1] = ("Berlin"); stadt[2] = ("Chemnitz"); stadt[3] = ("Dresden"); stadt[4] = ("Erfurt"); stadt[5] = ("Flensburg"); stadt[6] = ("Garmisch"); stadt[7] = ("Hamburg"); } /*Methode anbieten * der Benutzer kann wählen, ob er die Standartroute, * oder die vorgegebene Route möchte */ public final void anbieten() { System.out.println("Staedte: Aachen, Berlin, Chemnitz, Dresden, " //zeigt die verfügbaren Städte an + "Erfurt, Flensburg, Garmisch, Hamburg"); // Auswahl der Städteliste mit Hilfe der Konsole String antwort; antwort = Konsole. getInputString("Moechten Sie diese Staedteliste nutzen? j/n"); if (antwort.equals("j")){ //Bei Eingabe "j" wird die Standartroute ausgegeben System.out.println ("Antwort: " + antwort); alleDaten (); } else if (antwort.equals("n")){ //Bei Eingabe "n" wird die Methode "list" ausgeführt //Der Benutzer kann seine eigene Route zusammenstellen list (); } else { //Wird weder "j" noch "n" eingegeben wird mitgeteilt, dass System.out.println("Bitte geben Sie j oder n ein"); // Eingabe ungültig ist, eine erneute Eingabe ist möglich antwort = Konsole. getInputString("Moechten Sie diese Staedteliste nutzen? j/n"); } } public int standardroute(){ int summe = //Berechnung der Kilometeranzahl der Standartroute (entfernung[1][6]+ entfernung[6][7]+ //Die Felder des Arrays werden nach vorgegebener Reihenfolge summiert entfernung[7][3]+ entfernung[3][6]+ entfernung[6][0]+ entfernung[0][5]+ entfernung[5][1]); return summe; } public void alleDaten(){ // Route wird übersichtlich auf der Konsole ausgegeben System.out.println("Start: Berlin"); System.out.println("Von Berlin nach Garmisch: " + entfernung[1][6] + "km."); System.out.println("Von Garmisch nach Hamburg: " + entfernung[6][7] + "km."); System.out.println("Von Hamburg nach Dresden: " + entfernung[7][3] + "km."); System.out.println("Von Dresden nach Garmisch: " + entfernung[3][6] + "km."); System.out.println("Von Garmisch nach Aachen: " + entfernung[6][0] + "km."); System.out.println("Von Aachen nach Flensburg: " + entfernung[0][5] + "km."); System.out.println("Von Flensburg nach Berlin: " + entfernung[5][1] + "km."); System.out.println("Gesamtstrecke: " + standardroute()); } //Methode zum erstellen einer eigenen Route public void list() { int s = 0; //Start int ns = 0; //naechste Stadt int ls = 0; //letzte Stadt int strecke = 0; stadt [s] = Konsole.getInputString("Bitte geben Sie die Startstadt ein."); System.out.println("Staedte: Aachen, Berlin, Chemnitz, Dresden, " + "Erfurt, Flensburg, Garmisch, Hamburg"); stadt [ls] = stadt [s]; //die Route wird mit der 1. Stadt beendet System.out.println("Start in: " + stadt [s]); stadt [ns] = Konsole.getInputString("Bitte geben Sie die nächste Stadt ein"); for (int wdh = 0; wdh <= stadt.length; wdh++) if (!stadt [s].equals(stadt [ns])) { // es können so lange Städt eingegeben werden, bis die // 1. Stadt eingegeben wird // übersichtliche Ausgabe der Auswahl für den Benutzer auf der Konsole System.out.println("Von " + stadt [ls] + " nach " + stadt [ns]); // Entfernung zwischen den beiden Städten wird als Zwischensumme berechnet // und auf der Konsole ausgegeben int i = Integer.valueOf(stadt [ls]); int j = Integer.valueOf(stadt [ns]); System.out.println(entfernung[i][j] + " km."); // Die gesamten Zwischensummen der Entfernungen werden summiert strecke = strecke + entfernung[i][j]; stadt [ls] = stadt [ns]; // es wird immer die zuletzt eingegebene Stadt // mit der aktuellen Stadt ausgegeben und berechnet } else { //wenn der Benutzer die Startstadt eingibt, wird die System.out.println("Gesamtstrecke: " + strecke); //Eingabe beendet und die Kilometerzahl der gesamten //Strecke ausgegeben } } //Die Methoden werden getestet public static void main(String[] args) { Route test = new Route(); test.anbieten(); } }
-
Hi Sophie,
wenn du in Zeile 131 um die EIngabe der nächsten Stadt bittest und erst ab Zeile 133 deine Schleife ansetzt, wird Zeile 131 selbstverständlich nur einmalig zur Ausführung gebracht.
Darüber hinaus würde ich von CPoly angebotene while-Schleife nutzen, da deine Zählschleife ja doch wieder nach einigen Durchläufen beendet wird.
Außerdem sehe ich nicht, wo deine Zählvariablen erhöht werden.
der Code:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
int s = 0; //Start int ns = 0; //naechste Stadt int ls = 0; //letzte Stadt int strecke = 0; stadt [s] = Konsole.getInputString("Bitte geben Sie die Startstadt ein."); System.out.println("Staedte: Aachen, Berlin, Chemnitz, Dresden, Erfurt, Flensburg, Garmisch, Hamburg"); stadt [ls] = stadt [s]; //die Route wird mit der 1. Stadt beendet System.out.println("Start in: " + stadt [s]); stadt [ns] = Konsole.getInputString("Bitte geben Sie die nächste Stadt ein"); for (int wdh = 0; wdh <= stadt.length; wdh++) if (!stadt [s].equals(stadt [ns])) ...
tut also nicht anders als:
Code java:1 2 3 4 5 6 7
stadt [0] = Konsole.getInputString("Bitte geben Sie die Startstadt ein."); stadt [0] = stadt [0]; stadt [0] = Konsole.getInputString("Bitte geben Sie die nächste Stadt ein"); for (int wdh = 0; wdh <= stadt.length; wdh++) if (!stadt [0].equals(stadt [0])) ...
und da du immer auf das selbe Element deines Arrays schreibst (was meines Erachtens eigentlich gar nicht beschrieben werden sollte, weil du doch dort die Städtenamen vorhälst), führt das Ganze in der if-Abfrage natürlich immer zu einer Übereinstimmung und zweitens zu einem inhaltlichen Chaos, dass du vermutlich gar nicht bezweckst
Viele Grüße
Carron
-
Du meine Güte!
Also mein eigentliches Anliegen ist, dass anstatt wie im 1. Quellcode die Städt durch Nummern eingegeben werden, die Städtenamen eingegeben werden können.
Kann mir vielleicht jemand erklären, wie ich das am Besten angehe?
(Was ich zwischenzeitlich ausprobiert habe ist, dass ich nach der Eingabe in die Konsole den String stadt mittels Integer.valueof (...) wieder in einen Integerwert zurückverwandle, dass geht aber auch mächtig schief)
Danke und Gruss
Sophie
-
29.06.10 10:41 #6
Hallo!
Also, dein Programm soll nach einer Start- und nach einer End-Stadt fragen, oder? Wurden die beiden Städte eingegeben (nicht als Index-Zahlen, sondern als Reintext), soll ausgegeben werden, wie weit sie voneinander entfernt liegen, richtig? Und abgebrochen wird, wenn als End-Stadt die Start-Stadt eingegeben worden ist?
Mal unabhängig von den Rahmenbedingungen: Warum implementierst du die Städtedistanzen denn nicht mit einer HashMap? Dann sparst du dir das elendige Array-Durchlaufen mit Schleifen und musst auch nicht von Städtenamen auf Indizes mappen. Eine HashMap<String, HashMap<String, Integer>> würde dir die Abfrage deutlich erleichtern.
Code :1 2
// Pseudo entfernungen.get("Aachen").get("Berlin") => 640
Ich hab diese Alternative mal implementiert. Wenn du willst, poste ich dir den Quellcode gerne hier herein.
Gruß
Matthias
Ähnliche Themen
-
array. wie werden arrays zugeweisen einer kopie des arrays oder mit einem pointer?
Von projumper im Forum PHPAntworten: 4Letzter Beitrag: 26.11.10, 11:08 -
Arrays
Von Lucien3000 im Forum JavaAntworten: 4Letzter Beitrag: 12.02.07, 15:01 -
Tabelle/Arrays und Arrays ausgeben
Von Meitli im Forum ASPAntworten: 1Letzter Beitrag: 09.02.06, 13:01 -
verzweifle an Arrays: Arrays veraendern
Von supersalzi im Forum PHPAntworten: 6Letzter Beitrag: 01.06.05, 16:00 -
Arrays
Von horetio im Forum .NET ArchivAntworten: 2Letzter Beitrag: 19.05.05, 12:29





Zitieren


Login





