Controlling your program

We all know that the execution of the statements in a
program takes place from top to bottom. We will learn how the different kinds of
statement have different effects in looping like decision-making statements (if-then, if-then-else, switch), the looping statements (for, while, do-while), and the branching statements (break, continue, return)
in Java programming language.
Selection
In this section we will learn how to use if-then, if-the else and
switch statements in Java programming. These are the two alternative structure
statements in Java.
The if statement
To start with controlling statements in Java, lets have a recap over the
control statements in C++. You must be familiar with the if-then statements in
C++. The if-then statement is the most simpler form of control flow statement.
It directs the program to execute a certain section of code. This code gets
executed if and only if the test evaluates to true. That is the if statement in
Java is a test of any boolean expression. The statement following the if will
only be executed when the boolean expression evaluates to true. On the contrary
if the boolean expression evaluates to false then the statement following the if
will not only be executed.
Lets tweak the example below:
if (a > 1)
System.out.println("Greater than 1");
if (a < 1)
System.out.println("Less than 1");
In the above example if we declare int a = 1, the statements
will show some of the valid boolean expressions to the if statement.
We are talking about if statements here so we can't
forget the else statement here. The if statement is incomplete without
the else statement. The general form of the statement is:
if (condition)
statement1;
else
statement2;
The above format shows that an else statement will be executed whenever an if statement evaluates to false.
For instance,
if (a>1){
System.out.println("greater than 1");
}
else{
System.out.println("smaller than 1");
}
Lets have a look at a slightly different example as
shown below:
class compare{
public static void main(String[] args){
int a = 20;
int b = 40;
if (a<b){
System.out.println("a
is smaller");
}
else{
System.out.println("b
is smaller");
}
}
}
|
The above example shows that we have taken two numbers
and we have to find the smallest amongst them. We have applied a condition that
if a<b, print 'a is smaller' else print 'b is smaller'. The following is the output
which we will get in the command prompt.
C:\javac>javac compare.java
C:\javac>java compare
a is smaller |
The switch statement
Sometimes it becomes cumbersome to write lengthy
programs using if and if-else statements. To avoid this we can use Switch statements
in Java. The switch statement is used to select multiple alternative execution
paths. This means it allows any number of possible execution paths. However,
this execution depends on the value of a variable or expression. The switch
statement in Java is the best way to test a single expression against a series
of possible values and executing the code.
Here is the general form of switch statement:
switch (expression){
case 1:
code block1
case 2:
code block2
.
.
.
default:
code default;
}
The expression to the switch must be of a type
byte, short, char, or int. Then there is a code block following the switch
statement that comprises of multiple case statements and an optional default
statement.
The execution of the switch statement takes place by comparing the value of the
expression with each of the constants. The comparison of the values of the
expression with each of the constants occurs after the case statements.
Otherwise, the statements after the default statement will be executed.
Now, to terminate a statement following a switch
statement use break statement within the code block. However, its an
optional statement. The break statement is used to make the computer jump to the
end of the switch statement. Remember, if we won't use break statement the
computer will go ahead to execute the statements associated with the next case
after executing the first statement.
Here is an example which will help you to understand more easily:
switch (P { //
assume P is an integer variable
case 1:
System.out.println("The number is 1.");
break;
case 2:
case 4:
case 8:
System.out.println("The number is 2, 4, or 8.");
System.out.println("(That's a power of 2!)");
break;
case 3:
case 6:
case 9:
System.out.println("The number is 3, 6, or 9.");
System.out.println("(That's a multiple of 3!)");
break;
case 5:
System.out.println("The number is 5.");
break;
default:
System.out.println("The number is 7,");
System.out.println(" or is outside the range 1 to 9.");
}
For example the following program Switch, declares an
int named week whose value represents a day out of the week. The program
displays the name of the day, based on the value of week, using the switch
statement.
class Switch{
public static void main(String[] args){
int week = 5;
switch (week){
case 1: System.out.println("monday"); break;
case 2: System.out.println("tuesday"); break;
case 3: System.out.println("wednesday"); break;
case 4: System.out.println("thursday"); break;
case 5: System.out.println("friday"); break;
case 6: System.out.println("saturday"); break;
case 7: System.out.println("sunday"); break;
default: System.out.println("Invalid week");break;
}
}
}
|
In this case, "friday" is printed to
standard output.
C:\javac>javac Switch.java
C:\javac>java Switch
friday |
One other point to note here is that the body of a switch statement is known as
a switch block. The appropriate case gets executed when the switch
statement evaluates its expression.
Iteration
The concept of Iteration has made our life much more
easier. Repetition of similar tasks is what Iteration is and that too without
making any errors. Until now we have learnt how to use selection statements to
perform repetition. Now lets have a quick look at the iteration statements which
have the ability to loop through a set of values to solve real-world problems.
The for Statement
In the world of Java programming, the for loop has made
the life much more easier. It is used to execute a block of code continuously to
accomplish a particular condition. For statement consists of tree parts i.e. initialization,
condition, and iteration.
initialization : It is an expression that sets the value of the loop
control variable. It executes only once.
condition : This must be a boolean expression. It tests the loop
control variable against a target value and hence works as a loop terminator.
iteration : It is an expression that increments or decrements the loop
control variable.
Here is the form of the for loop:
for(initialization; condition; iteration){
//body of the loop
}
For example, a sample for loop may appear as follows:
int i;
for (i=0; i<10; i++)
System.out.println("i = " +i);
In the above example, we have initialized the for loop
by assigning the '0' value to i. The test expression, i < 100, indicates that
the loop should continue as long as i is less than 100. Finally, the increment
statement increments the value of i by one. The statement following the for loop
will be executed as long as the test expression is true as follows:
System.out.println("i = " + i);
Well, we can add more things inside a loop. To do so we
can use curly braces to indicate the scope of the for loop. Like,
int i;
for (i=0; i<10; i++) {
MyMethod(i);
System.out.println("i = " + i);
}
There is a simpler way to declare and initialize the variable used in the loop.
For example, in the following code, the variable i is declared directly
within the for loop:
for (int i=0; i<100; i++)
System.out.println("i = " +i);
Lets see a simple example which will help you to
understand for loop very easily. In this example we will print 'Hello World' ten
times using for loop.
class printDemo{
public static void main(String[] args){
for (int i = 0; i<10; i++){
System.out.println("Hello World!");
}
}
}
|
Here is the output:
C:\javac>javac printDemo.java
C:\javac>java printDemo
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World! |
After learning how to use a for loop, I would like to
introduce another form of for loop to be used for iteration through
collection and arrays. This form has enhanced the working of for loop. This is
the more compact way to use a for loop.
Here we will take an array of 10 numbers.
int[] numbers = {1,2,3,4,5,6,7,8,9,10};
The following program, arrayDemo,displays the usage of for loop through arrays.
It shows the variable item that holds the the current value from the
array.
class arrayDemo{
public static void main(String[] args){
int[] numbers = {1,2,3,4,5,6,7,8,9,10};
for (int item : numbers) {
System.out.println("Count is: " + item);
}
}
}
|
Here is the output of the program
C:\javac>javac arrayDemo.java
C:\javac>java arrayDemo
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10 |
We would like to suggest to use this form of for
loop if possible.
The while and do-while Statements
Lets try to find out what a while statement
does. In a simpler language, the while statement continually executes a
block of statements while a particular condition is true. To write a while
statement use the following form:
while (expression) {
statement(s)
}
Lets see the flow of the execution of the while
statement in steps:
1. Firstly, It evaluates the condition in parentheses, yielding true or false.
2. Secondly, It continues to execute the next statement if the condition is
false and exit the while statement.
3. Lastly, If the condition is true it executes each of the statements between
the brackets and then go back to step 1.
For example:
// This is the Hello program in Java
class Bonjour{
public static void main (String args[]){
System.out.print("Bonjour "); // Say Hello
int i = 0;
// Declare and initialize loop counter
while (i < args.length){ // Test and Loop
System.out.print(args[i]);
System.out.print(" ");
i = i + 1; // Increment Loop Counter
}
System.out.println(); // Finish the line
}
}
|
In the above example, firstly the condition will be
checked in the parentheses, while (i<args.length).
If it comes out to be true then it will continue the execution till the last
line and will go back to the loop again. However, if its false it will continue
the next statement and will exit the while loop.
The output is as follows:
C:\javac>javac Bonjour.java
C:\javac>java Bonjour
Bonjour |
The while statement works as to for loop because the third step loops back to
the top. Remember, the statement inside the loop will not execute if the
condition is false. The statement inside the loop is called the body of the
loop. The value of the variable should be changed in the loop so that the
condition becomes false and the loop terminates.
Have a look at do-while statement now.
Here is the syntax:
do {
statement(s)
} while (expression);
Lets tweak an example of do-while loop.
class DoWhileDemo{
public static void main (String args[]) {
int i = 0;
do{
System.out.print("Bonjour"); // Say Bonjour
System.out.println(" ");
i = i + 1; // Increment LoopCounter
}while (i < 5);
}
}
|
In the above example, it will enter the loop without
checking the condition first and checks the condition after the execution of the
statements. That is it will execute the statement once and then it will evaluate
the result according to the condition.
The output is as follows:
C:\javac>javac DoWhileDemo.java
C:\javac>java DoWhileDemo
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour |
You must have noticed the difference between the while
and do-while loop. That is the do-while loop evaluates its expression at the
bottom of the loop. Hence, the statement in the do-while loop will be executed
once.
Jumping
Sometimes we use Jumping Statements in Java. Using for,
while and do-while loops is not always the right idea to use because they are
cumbersome to read. Using jumping statements like break and continue it is
easier to jump out of loops to control other areas of program flow.
The break Statement
We use break statement to terminate the loop once the
condition gets satisfied.
Lets see a simple example using break statement.
class BreakDemo{
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(i);
if (i==3) {
break ;
}
}
}
}
|
In the above example, we want to print 5 numbers from 0
to 1 at first using for loop as shown. Then we put a condition that 'if
i = = 3', the loop should be terminated. To
terminate the loop after satisfying the condition we use break.
It gives the following output:
C:\javac>javac BreakDemo.java
C:\javac>java BreakDemo
0
1
2
3 |
The break statement has two forms: labeled and
unlabeled. You saw the labeled form in the above example i.e. a
labeled break terminates an outer statement. However, an unlabeled break
statement terminates the innermost loop like switch, for, while, or do-while
statement.
Now observe the example of unlabeled form below.
We have used two loops here two print '*'. In this example, if we haven't use
break statement thus the loop will continue and it will give the output as shown
below.
class BreaklabDemo1
{
public static void main(String[] args)
{
for (int i = 0; i < 10; i++) {
System.out.print("\n");
for (int j = 0; j<=i; j++)
{
System.out.print("*");
if (j==5)
{ // break;
}
}
}
|
Output:
C:\javac>javac BreaklabDemo1.java
C:\javac>java BreaklabDemo1
*
**
***
****
*****
******
*******
********
*********
**********
C:\javac> |
However in the following example we have used break
statement. In this the inner for loop i.e. "for
(int j=0; j<=i; j++)" will be executed
first and gets terminated there n then. Then the outer for loop will be executed
i.e. "for (int i=0; i<10; i++)".
And it will give the output as shown below.
class BreaklabDemo{
public static void main(String[] args){
for (int i = 0; i < 10; i++) {
System.out.print("\n ");
for (int j = 0; j<=i; j++){
System.out.print("*");
if (j==5)
break;
}
}
}
}
|
Output:
C:\javac>javac BreaklabDemo.java
C:\javac>java BreaklabDemo
*
**
***
****
*****
******
******
******
******
******
C:\javac> |
The continue statement
The continue statement is used in many programming languages such as C, C++, java etc. Sometimes we do not need to execute some statements under the loop then we use the continue statement that stops the normal flow of the control and control returns to the loop without executing the statements written after the continue statement. There is the difference between break and continue statement that the break statement exit control from the loop but continue statement keeps continuity in loop without executing the statement written after the continue statement according to the conditions.
In this program we will see that how the continue statement is used to stop the execution after that.
Here is the code of the program :
public class Continue{
public static void main(String[] args){
Thread t = new Thread();
int a = 0;
try{
for (int i=1;i<10;i++)
{
if (i == 5)
{
continue;
//control will never reach here (after the continue statement).
//a = i;
}
t.sleep(1000);
System.out.println("chandan");
System.out.println("Value of a : " + a);
}
}
catch(InterruptedException e){}
}
} |
Output of the program :
If we write the code in the given program like this :
if (i == 5 )
{
continue;
a = i;
}
Then the program will generate an error on compile time like :
C:\chandan>javac Continue.java
Continue.java:12: unreachable statement
a = i;
^
1 error
If we write the code in the given program like this :
if (i == 5 )
{
continue;
}
Then the program prints the output like :
|
C:\chandan>javac Continue.java
C:\chandan>java Continue
chandan
Value of a : 0
chandan
Value of a : 0
chandan
Value of a : 0
chandan
Value of a : 0
chandan
Value of a : 0
chandan
Value of a : 0
chandan
Value of a : 0
chandan
Value of a : 0
|

|
Current Comments
0 comments so far (post your own) View All Comments Latest 10 Comments: