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:
Error Handling for REST with Spring
Spring MVC Async vs Spring WebFlux
Java – Delete a File
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
Java Program to Find Transpose of a Graph Matrix
Java Program to Solve a Matching Problem for a Given Specific Case
Thao tác với tập tin và thư mục trong Java
Java Program to Implement Floyd-Warshall Algorithm
Guide to Spring @Autowired
JUnit 5 @Test Annotation
Using JWT with Spring Security OAuth
@Before vs @BeforeClass vs @BeforeEach vs @BeforeAll
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Các nguyên lý thiết kế hướng đối tượng – SOLID
Hướng dẫn Java Design Pattern – Memento
Java Program to Implement Graph Coloring Algorithm
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Java Program to Implement Park-Miller Random Number Generation Algorithm
Spring AMQP in Reactive Applications
Simple Single Sign-On with Spring Security OAuth2
Getting Started with Stream Processing with Spring Cloud Data Flow
Java Program to Implement Disjoint Set Data Structure
Hướng dẫn Java Design Pattern – Abstract Factory
File Upload with Spring MVC
Spring Boot - Tracing Micro Service Logs
Sorting Query Results with Spring Data
Mapping Nested Values with Jackson
HTTP Authentification and CGI/Servlet
Cơ chế Upcasting và Downcasting trong java
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Filtering and Transforming Collections in Guava
Java 8 Stream API Analogies in Kotlin