Dangling Else Problem in Java

0
311
Spread the love
  • 1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
    1
    Share

Dangling else problem in Java
Dangling else problem in Java

Dangling Else Problem in Java:

In my previous post on Execution control in java- here I have discussed the if else to control of an execution. In this post we will check how else placement can go wrong. So if we misplaced else- it becomes dangling else.
In if statement is in particular, it is assumed that statement-1 or statement-2 will get executed.The problem arises if statement-1 is in an if statement that has no else.This is forbidden in java:

In the below example our objective is to check if the x value is greater than 5 and y value is greater than 10.For the given input of x=10 and x=4


public class HelloWorld{

     public static void main(String []args){
         int x=10;
         int y=20;
         
         if(x>5)
           if(y>10)
           System.out.println("First case");
           else
           System.out.println("Second case");
     }
}
 

x=10
The output of the code:
$javac HelloWorld.java
$java -Xmx128M -Xms16M HelloWorld
First case
x=4
$javac HelloWorld.java
$java -Xmx128M -Xms16M HelloWorld

It is printing only First case or no output at all. This is because of the dangling else problem.As the else part is closer to the second if,the JVM will treat this as part of the inner if. not the outer if.However we can force the JVM to treat it differently by using a bracket.


public class HelloWorld{

     public static void main(String []args){
         int x=5;
         int y=20;
         
         if(x>15){
           if(y>10)
           System.out.println("First case");
            }
          else
           System.out.println("Second case");
     }
}
 

Now the output of the code is:
$javac HelloWorld.java
$java -Xmx128M -Xms16M HelloWorld
Second case

if else if construction:

if the code is like below:


if(boolean-expression)
statement-1
else if(boolean-expression)
     statement-2
     else
     statement-3
 

the JVM will treat this as:


if(boolean-expression)
statement-1
else if(boolean-expression)
     statement-2
else
     statement-3
 

It is kind of 3 way branching.
JVM will execute the first boolean-expression.If it is true,it will execute statement-1 and skips the remaining if conditions and go out of the if block.If the first expression is false it will execute the second boolean-expression and decide the statement-2 and statement-3.
The above could be modified as:


if(boolean-expression)
statement-1
else if(boolean-expression)
     statement-2
else if
     statement-3
 

In this way it will become multiway branching.

Don't miss out!
Subscribe To Newsletter

Receive top technical news, lesson ideas, travel tips and more!

Invalid email address
Give it a try. You can unsubscribe at any time.

Spread the love
  • 1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
    1
    Share

LEAVE A REPLY

Please enter your comment!
Please enter your name here