Zweidimensionales Array mit Schleife summieren

Sophie

Bekanntes Mitglied
Hallo Zusammen

Ich sitze hier schon ziemlich lange, um meine Fehler in diesem Quellcode zu finden. Es funktioniert alles schon in etwa, wie es sollte, bis auf ein paar Macken.
Also es geht um die Methode list() ab Zeile 97.

Also, ich habe folgenden Quellcode

Java:
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
             };
         
           
            
            /*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(){
			return summe; 
        	  
               		}
                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]);
                
          
            
     
   
            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() {
                
            	
            	//Variablen
            	
            	int start;
                int letzteStadt = 0;
                int strecke = 0;
                int naechsteStadt = 0;
                int j = 0;
                
                                
                
                //Array in dem die Staede gespeichert sind.
                String[] staedte = {
                "Aachen", "Berlin", "Chemnitz", "Dresden", 
                "Erfurt", "Flensburg", "Garmisch", "Hamburg"};
                            

                //Der Benutzer wird das Angebot angezeigt und aufgefordert seine Route auszuwählen
                
                int[] citycount = new int[8];

                
                
                System.out.println("Staedte: 0 Aachen, 1 Berlin, 2 Chemnitz, 3 Dresden, "
                                    + "4 Erfurt, 5 Flensburg, 6 Garmisch, 7 Hamburg");
                
                start = Konsole.getInputInt("In welcher Stadt möchten Sie starten?");
                
              //  letzteStadt = start;                               //die Route wird mit der 1. Stadt beendet
                                                            
                System.out.println("Start in: " + start);
                
                
                

                	while (start != naechsteStadt) {                 // es können so lange Städt eingegeben werden, bis die
                		                                             // 1. Stadt eingegeben wird
                		
                		

                		for(int i = 0; i<citycount.length; i++)
                        {
                			naechsteStadt = Konsole.getInputInt("Bitte geben Sie die nächste Stadt ein");
                			
                        
                        citycount[i] = naechsteStadt;
                   		citycount[j] = letzteStadt;
                   		  
                		                            		            		
                   		         		
                		// übersichtliche Ausgabe der Auswahl für den Benutzer auf der Konsole
                		   System.out.println("Von " + staedte[citycount[j]]+" nach "+ staedte[citycount[i]]);
                       
                        // Entfernung zwischen den beiden Städten wird als Zwischensumme berechnet
                        // und auf der Konsole ausgegeben
                           System.out.println(entfernung[citycount[j]][citycount[i]]+" km.");    
                        
                        //Die gesamten Zwischensummen der Entfernungen werden summiert
                           strecke = strecke + entfernung[i][j];       
                        
                         
                           letzteStadt = naechsteStadt;                       // es wird immer die zuletzt eingegebene Stadt
                                                                              // mit der aktuellen Stadt ausgegeben und berechnet
                  
                           
                          
                        while (start == naechsteStadt) {                      //wenn der Benutzer die Startstadt eingibt, wird die
                         System.out.println("Gesamtstrecke: " + strecke);     //Eingabe beendet und die Kilometerzahl der gesamten
                                                                              //Strecke ausgegeben
                    
                         break;
                       }
                       
                   }
          }          	  
}
            //Die Methoden werden getestet
                        
            public static void main(String[] args) {
                Route test = new Route();
                test.anbieten();
            }
 }

mit folgender Ausgabe auf der

Java:
Staedte: Aachen, Berlin, Chemnitz, Dresden, Erfurt, Flensburg, Garmisch, Hamburg
Moechten Sie diese Staedteliste nutzen? j/nn
Staedte: 0 Aachen, 1 Berlin, 2 Chemnitz, 3 Dresden, 4 Erfurt, 5 Flensburg, 6 Garmisch, 7 Hamburg
In welcher Stadt möchten Sie starten?5
Start in: 5
Bitte geben Sie die nächste Stadt ein4
Von Aachen nach Aachen
0 km.
Bitte geben Sie die nächste Stadt ein6
Von Erfurt nach Garmisch
490 km.
Bitte geben Sie die nächste Stadt ein1
Von Garmisch nach Berlin
671 km.
Bitte geben Sie die nächste Stadt ein3
Von Berlin nach Dresden
190 km.
Bitte geben Sie die nächste Stadt ein5
Von Dresden nach Flensburg
650 km.
Gesamtstrecke: 2310
Bitte geben Sie die nächste Stadt ein


Die Ausgabe sollte aber folgendermassen aussehen

Java:
Staedte: Aachen, Berlin, Chemnitz, Dresden, Erfurt, Flensburg, Garmisch, Hamburg
Moechten Sie diese Staedteliste nutzen? j/nn
Staedte: 0 Aachen, 1 Berlin, 2 Chemnitz, 3 Dresden, 4 Erfurt, 5 Flensburg, 6 Garmisch, 7 Hamburg
In welcher Stadt möchten Sie starten?5
Start in: Flensburg
Bitte geben Sie die nächste Stadt ein4
Von Aachen nach Aachen
0 km.
Bitte geben Sie die nächste Stadt ein6
Von Erfurt nach Garmisch
490 km.
Bitte geben Sie die nächste Stadt ein1
Von Garmisch nach Berlin
671 km.
Bitte geben Sie die nächste Stadt ein3
Von Berlin nach Dresden
190 km.
Bitte geben Sie die nächste Stadt ein5
Von Dresden nach Flensburg
650 km.
Gesamtstrecke: 2310

Bei "Start in:" wird die Zahl angegeben, dort sollte aber der Name stehen
Dann sollte anstatt "Von Aachen nach Aachen" "Von Erfurt nach Flensburg"
550km angezeigt werden.

Danach funktioniert alles bestens.

Bis nach Ausgabe der Gesamtstrecke wieder nach der nächsten Stadt gefragt wird, es sollte eigentlich beendet werden.

Könnte mir viellicht jemand erklären, wie es dazu kommt?

Vielen Dank
Sophie
 
Dein break in Zeile 169 beendet nur die innere while schleife.
mach aus dem
Code:
while (start == naechsteStadt)
ein
Code:
if (start == naechsteStadt)
und dann sollte er aushören nachdem du die startstadt ausgewählt hast.

PS: Das ganze Schleifenzeugs sieht schon recht merkwürdig aus... die äußere while kannst du dir vermutlich auch sparen.
 

Zurück
Oben