Auch hier gehe ich nicht auf die generelle Handhabung ein, sondern nur auf Besonderheiten. Wie bestimmt schon bekannt ist, wertet while immer nur ein boolean-Resultat aus.
int a = 3;
while (a){ } // Compiler-Fehler, da kein boolean-Wert
while (a=3){ } // Compiler-Fehler, da ebenfalls kein boolean-Wert
while (a==3) { } // OK
while (true) { } // OK
Auch der Unterschied zwischen do-while (mindestens ein Durchgang) und while (evtl. kein Durchgang) dürfte bekannt sein.