Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
mein problem ist ja das nach der for schleife mit k-- kommt das vor der do schleife oder danach und wenn ich k-- und danach k++ dann komm ich doch nicht wieder auf 6
ja das weis ich ich das programm ist gegeben und man muss ausrechnen was rauskommt wenn k=3 und summe=9 ist das ergebnis habe ich oben schon erwähnt ich frage mich was ich rechnen muss das es rauskommt kriege es nicht hin auf die k=6 und die summe 24 zu kommen
Warum nicht k=3 und summe=10, oder 11?
Du hast die Werte, die rauskommen müssen. Jetzt nimmst du dir ein Stück Papier und machst die Rechenschritte rückwärts.
Zum Schluss läuft die while Schleife, also musst du es rückwärts als erstes machen. In der Schleife rechnest du
meine Erfahrung ist: Wenn man Codestrukuren verstehen will, dann nutzt man die Ausgabe:
HTML:
Startwerte: k=3 summe=9
For-Schleife beim 1. Durchlauf i=0
dekremtieren von k = 2
Halbierung der summe =4
Do-Schleife:
k=2 und summe=4
(summe = summe + k * 2) neuer Wert für summe= 8
Ende Anweisung im do-Block und k wird inkrementiert k= 3
Überprüfen ob while bedingung true ist. Summe =8 und damit ist while true
Do-Schleife:
k=3 und summe=8
(summe = summe + k * 2) neuer Wert für summe= 14
Ende Anweisung im do-Block und k wird inkrementiert k= 4
Überprüfen ob while bedingung true ist. Summe =14 und damit ist while true
Do-Schleife:
k=4 und summe=14
(summe = summe + k * 2) neuer Wert für summe= 22
Ende Anweisung im do-Block und k wird inkrementiert k= 5
Überprüfen ob while bedingung true ist. Summe =22 und damit ist while false
For-Schleife beim 2. Durchlauf i=1
dekremtieren von k = 4
Halbierung der summe =11
Do-Schleife:
k=4 und summe=11
(summe = summe + k * 2) neuer Wert für summe= 19
Ende Anweisung im do-Block und k wird inkrementiert k= 5
Überprüfen ob while bedingung true ist. Summe =19 und damit ist while true
Do-Schleife:
k=5 und summe=19
(summe = summe + k * 2) neuer Wert für summe= 29
Ende Anweisung im do-Block und k wird inkrementiert k= 6
Überprüfen ob while bedingung true ist. Summe =29 und damit ist while false
For-Schleife beim 3. Durchlauf i=2
dekremtieren von k = 5
Halbierung der summe =14
Do-Schleife:
k=5 und summe=14
(summe = summe + k * 2) neuer Wert für summe= 24
Ende Anweisung im do-Block und k wird inkrementiert k= 6
Überprüfen ob while bedingung true ist. Summe =24 und damit ist while false
Java:
public class Summe {
/**
* @param args
*/
public static void main(String[] args) {
int k = 3;
int summe = 9;
System.out.println("Startwerte: k=" + k + " summe=" + summe);
for (int i = 0; i < 3; i++) {
System.out.println("\n\nFor-Schleife beim " + (i + 1)
+ ". Durchlauf i=" + i);
k--;
System.out.println(" dekremtieren von k = " + k);
summe = summe / 2;
System.out.println(" Halbierung der summe =" + summe);
do {
System.out.println("\n Do-Schleife: ");
System.out
.println(" k=" + k + " und summe=" + summe);
summe = summe + k * 2;
System.out
.println(" (summe = summe + k * 2) neuer Wert für summe= "
+ summe);
k++;
System.out
.println(" Ende Anweisung im do-Block und k wird inkrementiert k= "
+ k);
System.out
.println(" Überprüfen ob while bedingung true ist. Summe ="
+ summe
+ " und damit ist while "
+ (summe <= 20));
}
while (summe <= 20);
}
}
}