Rechnungs-mechanismus

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
 

Terep

Mitglied
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
 
A

Anneo

Gast
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.
 

Neue Themen


Oben