Java Notes

'if' Statement - 'else if' style

Series of tests

It is common to make a series of tests on a value, where the else part contains only another if statement. If you use indentation for the else part, it isn't easy to see that these are really a series of tests which are similar. It is better to write them at the same indentation level by writing the if on the same line as the else.

Example -- series of tests - cascading ifs

This code is correctly indented, but ugly and hard to read. It also can go very far to the right if there are many tests.

if (score < 35) {
    g.setColor(Color.MAGENTA);
} else {
    if (score < 50) {
        g.setColor(Color.RED);
    } else {
        if (score < 60) {
            g.setColor(Color.ORANGE);
        } else  {
            if (score < 80) {
                g.setColor(Color.YELLOW);
            } else {
                g.setColor(Color.GREEN);
            }
        }
    }
}

Example -- using 'else if' style for formatting

Here is the same example, using a style of writing the if immediately after the else. This is a common exception to the indenting rules, because it results in more readable programs. Note that it makes use of the rule that a single statement in one of the Java clauses doesn't need braces.

if (score < 35) {
    g.setColor(Color.MAGENTA);
} else if (score < 50) {
    g.setColor(Color.RED);
} else if (score < 60) {
    g.setColor(Color.ORANGE);
} else if (score < 80) {
    g.setColor(Color.YELLOW);
} else {
    g.setColor(Color.GREEN);
} 

Other languages

Some programming languages recognize this common construction with a special elseif keyword. Although it is hardly necessary, this kind of small touch can make a language a little nicer to use. The Java language designers are very conservative about adding keywords to the language, so don't expect it.