2017-10-24 3 views
-2

Ich bin ein Anfänger und ich muss diese "for" -Schleife in eine "while" -Schleife konvertieren.konvertieren verschachtelte Schleife in eine verschachtelte While-Schleife JAVA

int s = 0; 
int t = 1; 

for (int i = 0; i < 5; i++) { 
    s = s + i; 
    for (int j = i; j > 0; j--) { 
     t = t + (j - 1); 
    } 
    s = s + t; 
    System.out.println("T is " + t); 
} 
System.out.println("S is " + s); 

Ich versuchte dies und es nicht

int s = 0; 
int t = 1; 
int i = 0; 

while (i < 5) 
    i++; 
{ 
    s = s + i; 
    int j = i; 

    while (j > 0) 
     j--; 
    { 
     t = t + (j - 1); 
    } 
    s = s + t; 
    System.out.println("T is " + t); 
} 
System.out.println("S is " + s); 

der Ausgang war T = 0 und S = 5 wenn es

T is 1 
T is 1 
T is 2 
T is 5 
T is 11 
S is 30 

dank

+2

'i ++;' sollte vor der schließenden Klammer '}' stehen, also innerhalb des Blocks, nicht vor der öffnenden Klammer. 'while (...) {...; i ++; } ' – AntonH

Antwort

0
int s = 0; 
int t = 1; 
int i = 0; 

while (i < 5) 
{ 
    s = s + i; 
    int j = i; 

    while (j > 0) 
    { 
     t = t + (j-1); 
     j--; 
    } 
    i++; 
    s = s + t; 
    System.out.println("T is " + t); 
} 
System.out.println("S is " + s); 
funktionierten lesen sollten

Sie sollten in den synt suchen Axt vorsichtiger. Ansonsten haben Sie die Blöcke nur einmal ausgeführt.

Früher Sie liefen diese

while (i < 5) 
    i++; 

die im Allgemeinen die Schleife 5 Mal ausgeführt wird und nach dem Ende der Schleife i wird der Wert von 5.

Danach haben wir den Block laufen und Wir treffen wieder auf die While-Schleife.

while (j > 0) 
     j--; 

Es wird 5 mal wieder ausgeführt. So wäre es j=0 nach dieser Schleife endet.

Sie enden also mit t=0 und s=5. Das ist es.

+0

@TJW .: Wenn es geholfen hat, die Antwort auszuwählen – coderredoc

0

Die i++; sollte in den Klammern der Schleife sein, nicht davor platziert. Gleiches mit j.

while (i < 5) 
{ 
    s = s + i; 
    int j = i; 

    while (j > 0) 
    { 
     t = t + (j-1); 
     j--; // j needs to be incremented here 
    } 
    s = s + t; 
    i++; // i needs to be incremented here 
} 

Wie es derzeit ist, haben Sie eine Schleife, wo die einzige Anweisung ist i++; und dann dem Rest des Codes, der in seinem eigenen Code-Block (oder lokalen Bereich), wird nur einmal ausgeführt.