For Schleife Aufgabe warum 2,3,4?

Aufrufe: 143     Aktiv: 13.12.2022 um 13:02

0

Hallo zusammen,

Ich verstehe grade diese For-Schleife nicht:

    System.out.println("Exemple 1:");
    int n = 5;
    int a = 2;
    for(a = 3; a < n + 1; a = a++) {
    System.out.println(a-1);
    a = a + 1;
    }

Also ich habe es so verstanden:

for(a = 3; 3 < 5 + 1; a = 3+1) //somit ist a =4 System.out.println(4-1) // somit ist der Output: 3 a = 3 +1; //4

for(a=4; 4 < 5+1; a= 4+1) //somit ist a =5 System.out.println(5-1) // somit ist der Output: 4 a = 4 + 1 //5

for(a=6; 6 < 5+1; a= 4+1) //abbruch

Somit ist die Ausgabe 3,4

Aber warum ist es eigentlich 2,3,4?

Diese Frage melden
gefragt

Student, Punkte: 66

 
Kommentar schreiben
1 Antwort
0

Hallo sayuri, der Code ist - ich sag mal - seltsam. 1. die Zuweisung von a vor der for-Schleife ist überflüssig. a wird ja beim Start der for-Schleife auf 3 gesetzt. Da ist also die vorherige Zuweisung total egal. 2. die Schleifenvariable, hier a, wird immer am Ende der for-Schleife "bearbeitet". In diesem Fall a+1 wegen a++. Die Zuweisung a=a++ braucht es an dieser Stelle auch nicht. a++ hätte gereicht. 3. Denkfehler. Das Ergebnis der Ausgabe ist nur 2 und 4, 3 kommt nicht vor. Warum nicht? Weil in der for-Schleife die Schleifenvariable mit a=a+1 zusätzlich manipuliert wird. Also wird a zweimal erhöht. Somit kommt 3 nicht vor, weil a mit 3 startet, dann 5 wird und beim dritten Durchlauf 7 erreicht was das Ende der for Schleife bedeutet. Grundsätzlich gilt für for Schleifen folgendes: Als erstes wird die Schleifenvariable zugewiesen, dann wird die Abbruchbedingung geprüft und am Ende der Schleife die Schleifenvariable „bearbeitet“. Jede der 3 Anweisungen ist separat zu betrachten und kann auch weggelassen werden. So stellt z.B. die Schleife for(;;) {…} ganz einfach eine Endlosschleife dar. So, ich hoffe ich habe dich jetzt genug verwirrt ;-) Gruss jobe.

Diese Antwort melden
geantwortet

Sonstiger Berufsstatus, Punkte: 455

 

Vielen Dank für deine Antwort. Aber wenn ich es laufen lasse, erhalte ich 2,3,4....

  ─   sayuri 13.12.2022 um 07:16

Hallo sayuri, ich habe dein Programm als C Programm interpretiert und laufen lassen. Falls es eine andere Programmiersprache ist kann die for-Schleife auch anders interpretiert werden. Wenn du eine andere Ausgabe als ich hast, wirst du wohl auch eine andere Programmiersprache benutzt haben. Ich bittet dich daher zukünftig die Programmiersprache dazuzuschreiben. Gruß jobe.

  ─   jobe 13.12.2022 um 07:56

Achso, es handelt sich um Java.

  ─   sayuri 13.12.2022 um 13:02

Kommentar schreiben