schleifenproblem in java

  • Hallo!

    Wahrscheinlich werdet ihr über mein Problem nur den Kopf schütteln, aber ich steh grad voll aufm Schlauch!

    Hier ein teil einer Klausur aus dem ersten Semester Informatik:

    int i = 0;

    for (int j = 10; j < 20 && j % 3 != i % 3; ++j)
    i += j;

    Welchen Wert nimmt i nach Ausführung der Schleife an? Wenn ich den Text in Eclipse eingebe, nimmt i den Wert 21 an.
    Ich komm jedoch im Kopf immer auf 60.
    Wie gesagt, ich steh aufm Schlauch...

    Schon mal Danke im Vorraus!! [Blockierte Grafik: http://www.informatikforum.de/images/smilies/smile.gif]

  • Gehen wir's doch Schritt für Schritt durch.

    Anfang: i=0, j=10

    1. Iteration: Schleifenbedingung wegen 10<20 && 10%3 != 0%3 erfüllt. i wird um j=10 erhöht, j um 1. Es gilt i=10, j=11.

    2. Iteration: Schleifenbedingung wegen 11<20 && 11%3 != 10%3 erfüllt. i wird um j=11 erhöht, j um 1. Nun ist i=21, j=12.

    3. Iteration: Diese wird nicht mehr ausgeführt, da 21<20 nicht zutrifft.

    Nach der Schleife ist also i=21.

  • Ok, Danke. Das mit dem 3. Schritt erschließt sich mir aber nicht ganz. In der Schleife gilt doch als Bedingung, das j<20 ist. Wird also das i durch das logische Und auch mit dieser Bedingung verknüpft, also dass i ebenfalls kleiner 20 sein muss? Wenn dem so ist, hab ich wohl in der Vorlesung an dieser Stelle geschlafen...:sudern:

  • Ups, Fehler. Die Bedingung i<20 ist sehr wohl noch erfüllt (i ist ja 12); ich hab in Post #2 in der dritten Iteration i und j vertauscht.

    Der zweite Teil der Schleifenbedingung ist i%3 != j%3. Nun sind sowohl 12 als auch 21 durch 3 teilbar, d.h. sowohl i%3=0 als auch j%3=0. Damit ist nach der zweiten Iteration der zweite Teil der Bedingung nicht mehr erfüllt und somit die gesamte Schleifenbedingung, wodurch die Schleife nicht weiter ausgeführt wird.

  • Es geht ja darum, was er zu Beginn der dritten Iteration prüft. j wurde ja nach Ende der zweiten Iteration zum zweiten Mal um 1 inkrementiert und hat daher nun den Wert 12.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!