do-while:
do
{
i++;
++j;
System.out.println( i * j );
}
while ((i < 10) && (j*j != 25));
I am learning about do-while vs while at the moment and would like to rewrite the above java fragment (already declared and initialized) using a while instead. Are the below rewritten codes correct way to do so:
while:
while ((i < 10) && (j*j != 25))
{
i++;
++j;
System.out.println( i * j );
}
Cheers
The difference between a
do-while
and awhile
is when the comparison is done. With ado-while
, you'll compare at the end and hence do at least one iteration.Equivalent code for your example
is equivalent to:
General comprehension
A
do-while
loop is an exit controlled loop which means that it exits at the end. Awhile
loop is an entry controlled loop which means that the condition is tested at the beginning and as a consequence, the code inside the loop might not even be executed.is equivalent to:
Use case
A typical use case for a
do-while
is the following: you ask the user something and you want do repeat the operation while the input is not correct.In that case, you want to ask at least once and it's usually more elegant than using a
while
which would require either to duplicate code, or to add an extra condition or setting an arbitrary value to force entering the loop the first time.At the opposite,
while
loops are much more commons and can easily replace ado-while
(not all languages have both loops).Do-While loops are pretty useful for cases like these, where you ask the user a question, and the user has to answer it for the program to terminate. For example, this code:
The key difference between
do-while
andwhile
, withdo-while
you are guaranteed at least one run of your code before the checks.*It does not need to get anymore complicated than that.
No, the two codes are not equivalent.
do-while
only checks the condition at the end of the loop soi++
,++j
andSystem.out.println(i * j)
happen at least once regardless of the initial values ofi
andj
.while
skips the entire loop if the condition isn'ttrue
for the first time the loop is entered.You can achieve the same effect with
while
by copying the loop's body once before the loop, for instance.