The computer steps through the instructions of a program one after
another in sequence. However, algorithms require the option of altering
the direction of the program flow such as jumping to another section
of code in the program.
Java does not offer a "go
to" type of statement as in some older languages, because
this leads to unreadable spaghetti code. However, Java does
contain several ways to jump from one statement to another in certain
circumstances. Below we discuss three such statements.
For example, you will occasionally need to jump out of a loop with
a break
or go back to the top of the loop with a continue
statement.
You will also need to use the powerful switch
statement that allows for the selection of code segments to jump
to according to the value of a variable.
Here we review the these flow control statements.
break
Statement & Statement
Labels
To jump out of a loop when a particular condition occurs, use the
break command. As shown here
while
( i < 5) {
i=a.doSomething();
if(i<0)
break;
// jump out of the loop
}
the break will result in the program flow moving out of the
loop and to the next statement following the loop statement.
If the break occurs within a nested loop, the flow will jump to
the next statement in the next outer loop. For example, in the following
case
for(
int k=0; k< 10; k++){
while ( i < 5) {
i=a.doSomething();
if(i<0)
break;
// jump out of the inner while loop
}
jj = i;
}
the break will result in flow jumping to the jj=i;
statement.
If, instead, you want the flow to jump outside of both loops, you
can put a label on the outer loop and add that name to the
break statement.
A label is simply an identifier in front of the loop statement
with a colon after it. For example,
loop1
: for( int k=0; k< 10; k++){
while ( i < 5) {
i=a.doSomething();
if(i<0)
break loop1;
// jump out of both loops
}
jj = i;
}
jj = k;
In this case, the program flow will jump out of both loops and
go to the statement
jj = k when the break statement executes.
Note the label does not have to be on the loop statement but does
need to be on a statement, such as an if-else
statement, that contains the break
statement. In this example,
jmp0:
if ( a < b) {
while ( i < 5) {
i=a.doSomething();
if(i<0)
break jmp0;
// jump out of the loop
}
jj = i;
}
jj = k;
the break jmp0;
will send the flow to the jj
= k; statement.
continue
Statement
Situations
can occur where you don't want to jump out of a loop but simply
stop the current iteration and go back to the top and continue with
the next iteration.
In the following example
while
( i < 5 ){
i=a.doSomething();
if(i<4)
continue;
b.doSomething();
}
the b.doSomething();
statement will not execute until i equals 4 because the continue
keeps sending the program flow back up to the next interation of
the loop.
In the case of nested loops, you may want
to jump out of not only the inner loop but the next one out as well.
In that case, you can put a label on the outer loop and jump to
it and continue its next iteration, as in
jmp0:
while (b.func()){
for (int i=0; i<4; i++){
if( a.func()) continue
jmp0;
}
}
switch/case
Statement
The switch statement provides a powerful tool for selecting code
segments according to the value of an integer variable. Multiple
if-else
statements could do the same work but require extra processing since
each if
statement will evaluate the variable.
The following example shows the form of the switch statement.
switch(
ii ){
case 1: statement
1;
case 2: statement
2;
default: default
statement ;
}
The ii variable
can be a byte,
short, int
or char
type (remember that char
data can be treated as unsigned short integers in some situations)
but not long.
According to the value of ii,
the "case
#" will be selected if ii=#.
If ii does
not equal any of the case values, the default statement will
be executed.
So in the above example, if ii
equals 1, statement 1 executes. If ii
equals 2, statement 2 executes. If ii
equals any other value, the default statement executes.
As written above, after statement 1 executes, the program will
continue to the next line and execute statement 2 and then
the default statement. To prevent this, you can insert a
break statement
that will send the program flow out of the switch
statement and to the statement that follows it:
switch(
ii ){
case 1: statement
1;
break;
case 2: statement
2;
break;
default: default
statement ;
}
Note that multiple statements can following the case labels:
void
doSomething( char cc)
{
switch(
cc ){
case 'A':
doSomething(cc,
2);
doSomethingElse(cc)
break;
case
'B':
doSomething(cc,
3);
break;
default:
doSomething(cc,
4) ;
}
}
References & Web Resources
Latest update: Dec.11.2003
|