Consider the following code fragment:
if (a > 0) if (b > 0) System.out.println("b positive"); else System.out.println("???");
System.out.println("???")
could in principle be the else-branch of:
The ambiguity is solved by considering that an else always refers to the nearest if without an associated else. In the above example we have:
if (a > 0) if (b > 0) System.out.println("b positive"); else System.out.println("b negative");
It is always possible to use a block (i.e., {..}
) to disambiguate
nested if-else statements. In particular, if we want that an
else refers to an if that is not the immediately preceding
one, we have to enclose the immediately preceding if in a block. For
example:
if (a > 0) { if (b > 0) System.out.println("b positive"); } else System.out.println("a negative");