In Java, the body of a do-while
loop and the loop condition do not belong to the same scope. So the following code won't compile:
do {
boolean b = false;
} while (b); // b cannot be resolved to a variable
But this code does make sense to me.
Also, I cannot find any pitfalls if the body and the condition are in the same scope; since the body will always get executed, and Java does not have Goto
, I don't know how a variable declaration in the outermost do-while
body scope could be skipped. Even if it is possible, the compiler could always detect such possibility and then produce compile time errors.
Is there any reason for this behavior (aside from keeping the do-while
loop in the same format as while
)? I am really curious. Thanks for any inputs!
Following your logic here is the case when b
would not be defined prior to first usage:
do {
continue;
boolean b = false;
} while (b); // b cannot be resolved to a variable
Note that very often boolean
flags are a code smell, try to avoid them rather than fight with them.
Because that's one way scope is defined in Java; inside {}
is a new scope.
IMO it wouldn't make much sense to special-case a single construct.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With