Mega Code Archive

 
Categories / Java / Collections Data Structure
 

Bracket Checker

import java.io.IOException; public class BracketChecker {   private String input;   public BracketChecker(String in) {     input = in;   }   public void check() {     int stackSize = input.length();      Stack theStack = new Stack(stackSize);      for (int j = 0; j < input.length(); j++)     {       char ch = input.charAt(j);       switch (ch) {       case '{': // opening symbols       case '[':       case '(':         theStack.push(ch); // push them         break;       case '}': // closing symbols       case ']':       case ')':         if (!theStack.isEmpty()) // if stack not empty,         {           char chx = theStack.pop(); // pop and check           if ((ch == '}' && chx != '{') || (ch == ']' && chx != '[')               || (ch == ')' && chx != '('))             System.out.println("Error: " + ch + " at " + j);         } else           // prematurely empty           System.out.println("Error: " + ch + " at " + j);         break;       default: // no action on other characters         break;       }     }     if (!theStack.isEmpty())       System.out.println("Error: missing right delimiter");   }   public static void main(String[] args) throws IOException {     String input = "{Java [Source] (and) {[(Support)]}}";     BracketChecker theChecker = new BracketChecker(input);     theChecker.check();    } } class Stack {   private int maxSize;   private char[] stackArray;   private int top;   public Stack(int max) {     maxSize = max;     stackArray = new char[maxSize];     top = -1;   }   public void push(char j) {     stackArray[++top] = j;   }   public char pop() {     return stackArray[top--];   }   public char peek() {     return stackArray[top];   }   public boolean isEmpty() {     return (top == -1);   } }