Rechnungs-mechanismus

  • Themenstarter Themenstarter Anneo
  • Beginndatum Beginndatum
A

Anneo

Gast
Hallo,

Habe ein kleines Problem zu einer Aufgabe, als Neuling.

Unten im code wird ein Resultat ausgegeben, aber ich verstehe nicht ganz wie die Rechnung abläuft.
Es gibt verschieden Code-Schnipsel mit verschiedenen Resultaten.
Im code an der Stelle mit [c] x = x + 6; [/c] wird [c] 60 10 [/c] ausgegeben.

Java:
class MischMasch5 {
 public static void main(String [] args) {
  int x = 0;
  int y = 30;
  for (int aussen = 0; aussen < 3; aussen++) {
   for (int innen = 4; innen > 1; innen--) {
    x = x + 6;
    y = y - 2;
    if (x == 6) {
     break;
    }
    x = x + 3;
   }
   y = y - 2;
  }
  System.out.println(x + " " + y);
 }
}


Mit [c] x = x + 2; [/c] verläuft das auf und abzälen ungefähr so, bei Resultat [c] 45 6 [/c].

x (for-schleife innen 9mal)

5-10-15-20-25-30-35-40-45

y (for-schleife aussen 12mal)

30-28-26-24-22-20-18-16-14-12-10-8-6

naja hoffe da stimmt.

Bei [c] x = x + 6; [/c] kann man das nicht leicht mitverfolgen, habs auch mehrmals angesehen.

Vielen Dank für die Hilfe.
Rolf
 
Das hat mich jetzt auch interessiert.
Um es herauszubekommen, einfach ein paar Zeilen mit
System.out.println(// entsprechender Inhalt);
setzen:

aussen = 0 innen = 4 + x = 6
aussen = 0 innen = 4 y = 28
im if x = 6
innerhalb for aussen y = 26

aussen = 1 innen = 4 + x = 12
aussen = 1 innen = 4 y = 24
innerhalb for innen x = 15

aussen = 1 innen = 3 + x = 21
aussen = 1 innen = 3 y = 22
innerhalb for innen x = 24

aussen = 1 innen = 2 + x = 30
aussen = 1 innen = 2 y = 20
innerhalb for innen x = 33

innerhalb for aussen y = 18

aussen = 2 innen = 4 + x = 39
aussen = 2 innen = 4 y = 16
innerhalb for innen x = 42

aussen = 2 innen = 3 + x = 48
aussen = 2 innen = 3 y = 14
innerhalb for innen x = 51

aussen = 2 innen = 2 + x = 57
aussen = 2 innen = 2 y = 12
innerhalb for innen x = 60

innerhalb for aussen y = 10

60 10

Gruß

Terep
 
Vielen Dank, ist jetzt klar.
Mit den Ausgaben zwischendrin, werd ich mir merken.
Obwohl das am Anfang so aussah als müsste man das ohne compilieren machen.

Sieht so aus als würden die ersten drei Durchläufe, durch [c] break; [/c], geblockt.
Beim restlichen wird's irgendwie so durchlaufen.

0-aussen (4-innen)
1-aussen (4-3-2-innen) mal 3
2-aussen (4-3-2-innen) mal 3

Ok, nochmals Danke
R.
 

Zurück
Oben