Java Program to Check for balanced parenthesis by using Stacks

This is a Java Program to Check for balanced parenthesis by using Stacks. Parenthesis matching is commonly used for evaluating arithmetic expressions and in editors for validating syntax.

Here is the source code of the Java Program to check for balanced parenthesis by using stacks. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

/*
 *  Java Program to Check for balanced paranthesis by using Stacks
 */
 
import java.util.*;
 
public class ParenthesisMatching
{
    public static void main(String[] args) 
    {
        Scanner scan = new Scanner(System.in);
        /* Creating Stack */
        Stack<Integer> stk = new Stack<Integer>();
        System.out.println("Parenthesis Matching Test\n");
        /* Accepting expression */
        System.out.println("Enter expression");
        String exp = scan.next();        
        int len = exp.length();
        System.out.println("\nMatches and Mismatches:\n");
        for (int i = 0; i < len; i++)
        {    
            char ch = exp.charAt(i);
            if (ch == '(')
                stk.push(i);
            else if (ch == ')')
            {
                try
                {
                    int p = stk.pop() + 1;
                    System.out.println("')' at index "+(i+1)+" matched with ')' at index "+p);
                }
                catch(Exception e)
                {
                    System.out.println("')' at index "+(i+1)+" is unmatched");
                }
            }            
        }
        while (!stk.isEmpty() )
            System.out.println("'(' at index "+(stk.pop() +1)+" is unmatched");
    }
}
Parenthesis Matching Test
 
Enter expression
(a+(b*c)-d)
 
Matches and Mismatches:
 
')' at index 8 matched with ')' at index 4
')' at index 11 matched with ')' at index 1
 
 
 
Parenthesis Matching Test
 
Enter expression
((x+y/(z-w))
 
Matches and Mismatches:
 
')' at index 11 matched with ')' at index 7
')' at index 12 matched with ')' at index 2
'(' at index 1 is unmatched
 
 
 
Parenthesis Matching Test
 
Enter expression
(a+b*(c-d)-(e-f/(g+h*(k-i)/(l-j+k
 
Matches and Mismatches:
 
')' at index 10 matched with ')' at index 6
')' at index 26 matched with ')' at index 22
'(' at index 28 is unmatched
'(' at index 17 is unmatched
'(' at index 12 is unmatched
'(' at index 1 is unmatched

Related posts:

Java Program to Use rand and srand Functions
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Overview of Spring Boot Dev Tools
Send an email using the SMTP protocol
Spring Boot - Thymeleaf
Java Program to Implement Suffix Array
Java Program to Implement Insertion Sort
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
Java Program to Implement Warshall Algorithm
Getting Started with GraphQL and Spring Boot
So sánh ArrayList và LinkedList trong Java
Hướng dẫn Java Design Pattern – Template Method
Spring REST API + OAuth2 + Angular (using the Spring Security OAuth legacy stack)
Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java
HashSet trong java
Java Program to Implement TreeMap API
Java Program to Implement PriorityQueue API
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
Java Program to Implement Binomial Heap
Lớp Collections trong Java (Collections Utility Class)
Map to String Conversion in Java
Java toString() Method
Java Program to Construct an Expression Tree for an Postfix Expression
A Guide to LinkedHashMap in Java
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
File Upload with Spring MVC
Queue và PriorityQueue trong Java
Hướng dẫn tạo và sử dụng ThreadPool trong Java
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Hướng dẫn Java Design Pattern – Factory Method
Java Program to Implement CountMinSketch
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not