1  import java.util.Scanner;
  2  import java.util.Stack;
  3  
  4  /**
  5     This program uses a stack to check whether an expression has balanced 
  6     parentheses.
  7  */
  8  public class ParenChecker
  9  {
 10     public static void main(String[] args)
 11     {
 12        Scanner in = new Scanner(System.in);
 13        System.out.print("Enter an expression with { [ ( ) ] }: ");
 14        String expression = in.nextLine();
 15        
 16        Stack<Character> parens = new Stack<Character>();
 17  
 18        for (int i = 0; i < expression.length(); i++)
 19        {
 20           char ch = expression.charAt(i);
 21           if (ch == '(' || ch == '[' || ch == '{')
 22           {
 23              parens.push(ch);
 24           }
 25           else if (ch == ')' || ch == ']' || ch == '}')
 26           {
 27              if (parens.size() == 0)
 28              {
 29                 System.out.println("Not balanced.");
 30                 return;
 31              }
 32              char open = parens.pop();
 33              if (!(open == '(' && ch == ')'
 34                    || open == '[' && ch == ']'
 35                    || open == '{' && ch == '}'))
 36              {
 37                 System.out.println("Not balanced.");
 38                 return;
 39              }
 40           }
 41        }
 42        if (parens.size() == 0) 
 43        { 
 44           System.out.print("Balanced.");
 45        }
 46        else
 47        { 
 48           System.out.print("Not balanced.");
 49        }
 50     }
 51  }