1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

schleifenproblem in java

  • drained
  • 2. Oktober 2008 um 23:40
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • drained
    Punkte
    25
    Beiträge
    4
    • 2. Oktober 2008 um 23:40
    • #1

    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!!

  • Paulchen
    Gast
    • 2. Oktober 2008 um 23:47
    • #2

    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.

  • drained
    Punkte
    25
    Beiträge
    4
    • 3. Oktober 2008 um 00:06
    • #3

    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:

  • Paulchen
    Gast
    • 3. Oktober 2008 um 00:11
    • #4

    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.

  • drained
    Punkte
    25
    Beiträge
    4
    • 3. Oktober 2008 um 00:21
    • #5

    Ich dachte er prüft in der 2. Iteration 21 %3 und 11%3. Tut er laut Debugger auch. j nimmt den Wert 12 laut dem Teil gar nicht an.

  • Paulchen
    Gast
    • 3. Oktober 2008 um 00:23
    • #6

    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.

  • drained
    Punkte
    25
    Beiträge
    4
    • 3. Oktober 2008 um 00:31
    • #7

    Ah, jetzt hab ichs. Ich hab wohl im Kopf j einen Schritt zu spät erhöht.
    Thanks!!:)

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum