Java's if
-else
statement
provides your programs with the ability to selectively execute other
statements based on some criteria. For example, suppose that your
program printed debugging information based on the value of some
boolean variable named DEBUG
.
If DEBUG
were set to true
, then your
program would print debugging information such as the value of some
variable like x
. Otherwise, your program
would proceed normally. A segment of code to implement this might
look like this:
if (DEBUG) {
System.out.println("DEBUG: x = " + x);
}
This is the simplest version of the if
statement: the
statement governed by the if
is executed if some condition
is true. Generally, the simple form of if
can be written like this:
if (expression) {
statement
}
So, what if you wanted to perform a different set of statements if the
expression is false? Well, you can use the else
statement for that. Consider another example. Suppose that your program
needs to perform different actions depending on whether the user clicks
on the OK button or the Cancel button in an alert window. Your program
could do this using an if
statement:
. . .
// response is either OK or CANCEL depending
// on the button that the user pressed
. . .
if (response == OK) {
. . .
// code to perform OK action
. . .
} else {
. . .
// code to perform Cancel action
. . .
}
This particular use of the else
statement is the catch-all form.
The else
block is executed if the if
part is false.
There is another form of the else
statement, else if
which executes a statement based on another expression. For example, suppose
that you wrote a program that assigned grades based on the value of a test score,
an A for a score of 90% or above, a B for a score of 80% or above and so on.
You could use an if
statement with a series of companion
else if
statements, and an else
to write this code:
int testscore;
char grade;
if (testscore >= 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
An if
statement can have any number of companion else if
statements, but only one else
. You may have noticed that some
values of testscore
could satisfy more than one of the expressions
in the compound if
statement. For instance, a score of 76 would
evaluate to true
for two of the expressions in the if
statement:
testscore >= 70
and testscore >= 60
.
However, as the runtime system processes a compound if
statement
such as this one, once a condition is satisfied (76 >= 70), the appropriate
statements are executed (grade = 'C';
), and control passes out
of the if
statement without evaluating the remaining conditions.