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 Find Number of Spanning Trees in a Complete Bipartite Graph
Using Spring ResponseEntity to Manipulate the HTTP Response
Java Program to Implement Euclid GCD Algorithm
Spring Boot - Twilio
Java Program to Encode a Message Using Playfair Cipher
Java Program to Implement Splay Tree
Hướng dẫn Java Design Pattern – Chain of Responsibility
Java Program to Create a Random Linear Extension for a DAG
Java Program to Implement Floyd-Warshall Algorithm
A Guide to JUnit 5 Extensions
A Quick Guide to Spring MVC Matrix Variables
Debugging Reactive Streams in Java
Redirect to Different Pages after Login with Spring Security
Ways to Iterate Over a List in Java
Lập trình đa luồng trong Java (Java Multi-threading)
Java Program to Generate a Random Subset by Coin Flipping
Cài đặt và sử dụng Swagger UI
Hướng dẫn Java Design Pattern – Singleton
Call Methods at Runtime Using Java Reflection
Spring Boot Application as a Service
Server-Sent Events in Spring
Java Program to Compute Cross Product of Two Vectors
Spring Boot Actuator
Java 8 Stream findFirst() vs. findAny()
Hướng dẫn sử dụng Java Reflection
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Sử dụng CyclicBarrier trong Java
Guide to Spring Cloud Kubernetes
Custom Thread Pools In Java 8 Parallel Streams
Spring Boot - Build Systems
Spring Boot Integration Testing with Embedded MongoDB
Java Program to Implement Doubly Linked List