Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / October 2006

Tip: Looking for answers? Try searching our database.

Question regarding using label for break, continue flow control

Thread view: 
Shawn - 25 Oct 2006 20:44 GMT
Hi,

I need to use break and continue to transfer my program flow. I hope to
use labels to explicitly state where the control flow will be, as
suggested by somebody in the newsgroup. I have noticed something strange:

block1:
{  //compiler doesn't allow "{" here
    for (int i = 0; ..)
    {
        if (conditionSatisfied) continue block1; //this will move control to
the beginning of for loop, for loop will continue to run

    } //end of for loop
} //compiler doesn't allow "}" here

block2:
{    //now compiler allows "{" here
    ...//more code
    for (int i = 0; ..)
    {
        if (conditionSatisfied) break block2; //this will move control to the
end of block2 immediately
    }
    ...//mode code

} //end of block2, break block2 will bring control to the line below
this line

My questions:
1) Why block1 cannot have a pair of {} while block2 can?
2) Is my understanding of the control flow using break or continue
correct in this demo?

Thank you very much.
Oliver Wong - 25 Oct 2006 21:05 GMT
> Hi,
>
[quoted text clipped - 29 lines]
> 2) Is my understanding of the control flow using break or continue correct
> in this demo?

   "continue" only makes sense when you're iterating over something (e.g. a
for loop, do loop or while loop). Did you try applying the "block1:" label
directly onto the forloop, rather than onto a block containing the for-loop?
Alternatively, you could use "continue" without a label at all, and the
compiler will infer you mean that you want to continue the inner-most
iteration.

   (Your understanding of "break" seems to be correct).

   - Oliver
Bart - 26 Oct 2006 12:43 GMT
<snip>
> My questions:
> 1) Why block1 cannot have a pair of {} while block2 can?

The block itself is correct. You can't 'continue' to block1 because
it's not a loop block.

> 2) Is my understanding of the control flow using break or continue
> correct in this demo?

I'm not sure why you're doing all this. You seem to be trying to jump
around the code in a "goto" fashion instead of structuring it
correctly.

<evil>
You could wrap block1 in a do..while(false) loop but this is similar to
using exceptions for jumping to a different part of the code. Don't do
it!
</evil>

Regards,
Bart.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.