warum ist x = 14

kemre42

Mitglied
Warum krieg ich bei folgendem Programm für die Ausgabe von x = 14 ???
Ich weiß das hat was mit dem i zu tun aber müsste doch eigentlich völlig irellevant sein für das x.
Im vorraus schonmal vielen dank.

Java:
class Loop2 {
 public static void main(String[] args) {
  int x = 2;
  for(int i = 5; i <= 21; i = i + 3) {
   x = x + 2;
  }
  System.out.println("x = " + x);
  }
}
 
R

Rolf89

Gast
Wenn du dir eine derartig einfache Frage nicht selber beantworten kannst, dann hör gefälligst auf im Forum danach zu Fragen und les irgendeines der vielen guten, kostenlos im Internet verfügbaren (Anfänger)-Bücher zu Java.
 
H

hüteüberhüte

Gast
Moin! Zu X wird immer 2 hinzuaddiert und es wird immer größer! So eine Sauerei aber auch... vg

Gesendet mit Tapatalk 2

PS überlege, wie lange die Schleife läuft, sie sollte schon irgendwann abbrechen, man
 

Landei

Top Contributor
Das i selber wird mit dem x nicht vermanscht, aber die Anzahl der Schleifendurchläufe hängt natürlich von i ab, und beeinflusst damit "indirekt" auch x:

i wird in jedem Schleifendurchlauf um 3 erhöht, also haben wir Durchläufe mit i=5,8,11,14,17,20, insgesamt 6 Durchläufe. In jedem Durchlauf wird zu x 2 dazuaddiert, also x = 2 + 6*2 = 14.

Jede andere Schleifenbedingung, die auch zu 6 Durchläufen geführt hätte, hätte zum gleichen Ergebnis geführt.
 
Zuletzt bearbeitet:

brunothg

Aktives Mitglied
  1. Das wird x jedes mal um 2 erhöt, wenn die Schleife durchlaufen wird.
  2. Die Schleife wird so lange durchlaufen, bis i größer als 21 ist (i<=21).
  3. i wird bei jedem Schleifendurchlauf um 3 erhöt (i=i+3).

Damit ergeben sich folgende Schritte:

x | i | i<=21
2|5|Ja
4|8|Ja
6|11|Ja
8|14|Ja
10|17|Ja
12|20|Ja
14|23|Nein

Und falls du für den Einstieg ein gutes Buch suchst, kann ich dir nur das hier empfehlen.
Ist kostenlos im Netz einsehbar.
Galileo Computing :: Java ist auch eine Insel - index
 

Marco13

Top Contributor
Ganz nebenbei: Sowas kann man entweder in einem Debugger nachverfolgen, oder (in solchen einfachen Fällen) notfalls auch mit
Java:
  for(int i = 5; i <= 21; i = i + 3) {
   System.out.println("i at beginning = " + i);
   System.out.println("x at beginning = " + x);
   x = x + 2;
   System.out.println("i at end = " + i);
   System.out.println("x at end = " + x);
  }
 
H

hüteüberhüte

Gast
Oder so:

Java:
int i = 5;
int x = ;
sout(i =  + i);
for (; i <= 26; i += 3) {
  sout(i =  + i);
  x += 2;
  sout(i =  + i);
}
sout(i =  + i);

26-5 / 3=7 Durchläufe bzw. Iterationen
 

darekkay

Bekanntes Mitglied
Eure Hilfsbereitschaft erscheint lobenswert, aber so gebt ihr dem TO keinen Grund, sich überhaupt mit Java zu beschäftigen (schließlich kann man zu jeder Kleinigkeit, die auf den ersten Seiten eines Java-Buches erklärt werden, eine Frage stellen, die auch ausführlich beantwortet wird).
 

Landei

Top Contributor
Eure Hilfsbereitschaft erscheint lobenswert, aber so gebt ihr dem TO keinen Grund, sich überhaupt mit Java zu beschäftigen (schließlich kann man zu jeder Kleinigkeit, die auf den ersten Seiten eines Java-Buches erklärt werden, eine Frage stellen, die auch ausführlich beantwortet wird).

Ich habe gelernt, dass man die Menschen zu nichts zwingen kann. Wer sich nicht mit Java beschäftigen will, wird es auch nicht tun, wenn er hier keine Hilfestellung bekommt, Wen es interessiert, wird weitermachen, auch wenn ihm mal etwas vorgekaut wird. Und es ist leicht, als Profi zu vergessen, mit welchen Denkblockaden man selbst ganz am Anfang zu kämpfen hatte.
 

Oben