
Concept explainers
(Dangling-else Problem) The Java compiler always associates an else with the immediately preceding if unless told to do otherwise by the placement of braces ({ and }). This behavior can lead to what is referred to as the dangling-else problem. The indentation of the nested statement
- 1 if (x > 5)
- 2 if (y > 5)
- 3 System.out.println("x and y are > 5");
- 4 else
- 5 System.out.println("x is <= 5");
appears to indicate that if x is greater than 5, the nested if statement determines whether y is also greater than 5. If so, the statement outputs the string "x and y are > 5". Otherwise, it appears that if x is not greater than 5, the else part of the if ...else outputs the string "x is <= 5". Beware! This nested if ...else statement does not execute as it appears. The compiler actually interprets the statement as
- 1 if (x > 5)
- 2 if (y > 5)
- 3 System.out.println("x and y are > 5");
- 4 else
- 5 System.out.println("x is <= 5");
in which the body of the first if is a nested if ...else. The outer if statement tests whether x is greater than 5. If so, execution continues by testing whether y is also greater than 5. If the second condition is true, the proper string—"x and y are > 5"—is displayed. However, if the second condition is false, the string "x is <= 5" is displayed, even though we know that x is greater than 5. Equally bad, if the outer if statement’s condition is false, the inner if ...else is skipped and nothing is displayed. For this exercise, add braces to the preceding code snippet to force the nested if ...else statement to execute as it was originally intended.

Want to see the full answer?
Check out a sample textbook solution
Chapter 4 Solutions
EBK JAVA HOW TO PROGRAM, EARLY OBJECTS
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage LearningC++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology PtrMicrosoft Visual C#Computer ScienceISBN:9781337102100Author:Joyce, Farrell.Publisher:Cengage Learning,
- EBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENTNp Ms Office 365/Excel 2016 I NtermedComputer ScienceISBN:9781337508841Author:CareyPublisher:CengageProgramming with Microsoft Visual Basic 2017Computer ScienceISBN:9781337102124Author:Diane ZakPublisher:Cengage Learning




