Verständnisproblem Marken und Schleifen

  • Themenstarter Themenstarter Daena
  • Beginndatum Beginndatum
D

Daena

Gast
Hallo ihr Lieben!

Vor kurzem habe ich mit einem 14 Tage Java-Kurs (PDF) angefangen; Eine Aufgabe bereitet mir jetzt ziemliches Kopfzerbrechen und ich komme auf keinen grünen Zweig. (Vielleicht stehe ich auch nur auf der Leitung und es ist ein grundliegendes Verständnisproblem.) Wäre wirklich großartig, wenn mir hierbei jemand helfen könnte...

Die Aufgabenstellung gibt folgenden Quellcode vor; man soll ihn einfach nur verstehen:

Java:
public class Tag3Uebung9{

	public static void main(String [] args){

      SprungZuI:                 
      for (int i=0; i<=2; i++){ // III
      System.out.println("III "+i);
      
          SprungZuJ:                 
          for (int j=0; j<=2; j++){ // JJJ 
          System.out.println("JJJ "+j);
          
              for (int k=0; k<=2; k++){ /// KKK   
               System.out.println("KKK "+k);
              
                  if (k==1){          
                  System.out.println("!SPRUNG! k=1: k="+k);
                  break SprungZuJ;
                  }
                  
              } /// KKK
              
          } // JJJ
          
      } // III
		
	}

}

Was ich vermuten würde wäre:

III 0
JJJ 0
KKK 0
KKK 1
JJJ 1
KKK 0
KKK 1
JJJ 2
KKK 0
KKK 1

III 1
... alles nochmal für III 1
... alles nochmal für III 2

Er gibt aber aus:

III 0
JJJ 0
KKK 0
KKK 1
III 1
JJJ 0
KKK 0
KKK 1
III 2
JJJ 0
KKK 0
KKK 1

- Warum srpingt er nach dem ersten KKK 1 nicht zu SprungZuJ sonder zu SprungZuI?
- Und warum kommt ein Fehler wenn ich direkt unter eine Sprungmarke SprungZuJ: einen System.out.println setze der mir eine Ausgabe machen soll? Warum spielt es eine Rolle was unter dem Marker steht, wenn das Programm doch nur hinspringen soll?

Da i,j und k in den Schleifen immer wieder enu deklariert werden, starten sie doch immer wieder bei 0. Hm, müsste dann nicht mit dem Quellcode nicht eine Endlosschleife rauskommen? Hilfe!!

Total verwirrt,
die Daena
 
schreib mal statt break continue, dann kommt imho genau das raus, was du vermutet hast. nachdem ich break und continue eigentlich so gut wie nie benutze kann ich nurnoch versuchen mich wage an meinen java kurs zu erinnern bzw. das einfach frei zu übersetzen. break springt zu der angegebenen Sprungmarke aber übergeht die nächste kontrollstruktur. continue macht eben genau das nicht. wie gesagt, falls es technisch nicht 100% richtig ist, lass ich mich auch gern eines besseren belernen 🙂.
 
Hallo

probier mal das aus:
Java:
public class MainProg
{
    public static void main(String[] args)
    {

        ganzaussen : while (true)
        {
            if (true)
            {
                for (int i = 0; i < 5; i++)
                {
                    if (true)
                    {
                        break ganzaussen;
                    }

                }
                System.out.println("hinter for");
            }
            System.out.println("hinter if");
        }
        System.out.println("hinter while");
    }

}

Java 5 - Die praktische Referenz hat gesagt.:
Die break-Anweisung in der for-Schleife springt zu der Sprungmarke ganzaussen, sprich zur äußeren while-Schleife, die sofort beendet wird. Der Code, so, wie er hier steht, erzeugt daher nur ein einzige Ausgabe: hinter while

Anmerkungen

  • Die continue-Anweisung kann nur zu Zielen springen, die auf den Kopf einer umliegenden Schleife verweisen. Die aktuelle Iteration der Schleife wird daraufhin beendet, die Schleife mit der nächsten Iteration fortgesetzt.

  • Die break-Anweisung kann zu beliebigen umliegenden Schleifen- oder Verzeigungsköpfen springen. Die Scheife/Verzweigung, die angesprungen wird, wird daraufhin direkt beendet und das Programm mit der Anweisung unter der Schleife/Verzweigung fortgesetzt.

Ersetze also das break durch continue und du hast das Ergebnis, welches du vermutet hast.


MfG
hansmueller
 
Beachte aber, dass diese Art der Programmierung veraltet ist und nicht mehr genutzt werden sollte (sofern möglich)
 
Das erklärt's!! Vielen lieben Dank euch, ihr glaubt nicht wie ratlos ich da war! =)

@Sonecc: Hm, wenn Du damit strukturierte Programmierung meinst, jab. OOP kommt glaub ein paar Kapitel später dran, bin auch gespannt wie das wird.

Sonnige Grüße,
die Daena
 
Hallo Kevin!

Es ist der Java Intensivkurs von Marco Block, einem Info-Prof. aus Berlin.
Puh, gute Frage. Hab ihn glaub ich mal von einem Kommilitonen bekommen, bin mir da aber auch nicht ganz sicher.

Finde ihn eigentlich nicht verkehrt, soweit ich das beurteilen kann. Nur eben das mit den Schleifen fand ich im Kurs etwas zu knapp erklärt. =)

Liebe Grüße,
die Daena
 
Hallo Daena,
meinst du , du könntest mir den irgendwie zu kommen lassen ?
Hab zwar vor mir das Insel Buch zu kaufen 😛 , aber muss erstmal auf Gehalt warten und bis dahin wär das vllt eine Option =)
lg Kevin
 
Da gehen die Meinung ziemlich auseinader:

Als ich mit Java Insel angefangen hatte, dachte ich, ich lese ein Lexikon. Würde das auch nicht als Anfängerwerk empfehlen.
 
ich habe mit Studentenscripten im Praktikum sehr viel gelernt. Hab in einer Woche das geschafft, wofür studenten 2 Wochen zeit hatten (hab für das praktikum auch ein super zeugnis bekommen 😀). Eine Buchempfehlung kann ich daher nicht geben, da ich einfach keine Einstiegsliteratur mehr benötigt habe.
 
Naja gut, einstiegslecktüre ich kann meinen stand schlecht einschätzen... ich hab hier mit nem unipraktikanten schon nen projekt umgesetzt bzw bin dabei.
Nen tunier .. spieler aufnehmen , matches für jeder gegen jeden erstellen und bin gerade dran nun nurnoch die tabelle auszugeben.Also kann mit klassen, objekten,listenern und handlern z.b. schon was anfangen ..
 
Kommt drauf an, wo du hin willst.

für die Basics ganz klar gailer.net. Danach müsstest dir auf jedenfall noch Collections zu Gemüte führen. Die sind nämlich leider in dem gailer-Tutorial nur beschränkt verfügbar. Wennste das alles begriffen hast, kannste dir die Insel für den Rest vornehmen.

Für technische Hintergründe bzw. Vorbereitung auf z.B. das SCJP den anderen Link von oben, Fragebögen von killer und das SCJP-Buch.
 

Zurück
Oben