2010-12-30 2 views
3

Ich bemerkte, dass Java (daher wahrscheinlich C) kein Problem mit diesem hat:While-Schleife Verrücktheit in Java

while(condition1) { 
    //do somethin' 
} while(condition2); 

Ist dies das gleiche wie:

while(condition1 && condition2) { 
    //do somethin' 
} 
+3

Haben Sie es versuchen? –

Antwort

14

Nein, Sie haben zwei Schleifen.

while(condition1) { 
    // do something 
} 

while(condition2); // second loop which does nothing. 

Die zweite Schleife ist die gleiche wie

while(condition2) { } 

EDIT: Mein Vorschlag ist, regelmäßig die automatischen Formatierer in Ihrer IDE zu verwenden. Andernfalls können Sie Formatierungen erstellen, die vorschlagen, dass der Code Dinge tut, die er nicht tut.

Beispiel 1

if (condition) 
    statement1; 
    statement2; 
statement3; 

In diesem Beispiel scheint es, dass die ersten beiden Aussagen Teil des if-Bedingung, aber nur der erste ist.

Beispiel 2

http://www.google.com/ 
statement; 

wie Rechts Java sieht nicht aus, aber es ist, nicht aus den Gründen, die Formatierung schlägt;)

+1

Ah. Das macht Sinn. Sollte das schon gewusst haben. – delmet

+1

@delmet, markieren Sie es beantwortet, wenn Sie mit dieser Antwort zufrieden sind? :-) –

+0

Ok. Danke für die Erinnerung. – delmet

-1

Es gibt kein Konstrukt Java ist als in der ersten Form gezeigt. Sie sind Verlesen die erste Form: Sie haben wahrscheinlich

do { 

} while (cond) 

EDIT gesehen. Nach der } sollte es einen Zeilenumbruch geben. Das verwirrte mich auch.

4

Nein, sie sind anders.

Die erste while(condition1) wird zuerst ausgeführt.

Dann kommt while(condition2), die nichts außer ihm hat eine einzige ; was bedeutet, es ist nur eine leere Aussage.

Denken Sie daran, dass in Steuerblöcken wie if, for, while, wenn Sie die {} Klammern nicht verwenden, dann wird nur die erste unmittelbare Aussage, nachdem es wird ein Teil davon in Betracht gezogen werden.

Beispiel:

if (condition) 
    System.out.println("hello"); // prints only if condition is true. 
    System.out.println("no"); // not bound to the 'if'. Prints regardless. 

while (condition) 
    ; // do nothing! 
    System.out.println("something"); // not bound to the while 

bearbeiten, um die leere while-Schleife in der Java code conventions erwähnt wird

7. Statements

A while Anweisung sollte die folgende Form haben:

while (condition) { 
    statements; 
} 

Eine leere while-Anweisung die folgende Form haben sollte:

while (condition);