import java.util.Scanner; import fi.uef.cs.tra.*; class Brackets { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Give a string : "); String s = sc.nextLine(); System.out.println(s); System.out.println(checkBracketPairs(s)); } // main() public static boolean checkBracketPairs(String m) { LinkedStack bracketStack = new LinkedStack(); for (int i = 0; i < m.length(); i++) { char c = m.charAt(i); switch (c) { case '(' : bracketStack.push(")"); break; case '[' : bracketStack.push("]"); break; case '{' : bracketStack.push("}"); break; case ')' : case ']' : case '}' : if (bracketStack.isEmpty()) { System.out.print(m.charAt(i)); System.out.println(" without opening first"); return false; } if (! m.substring(i, i+1).equals(bracketStack.peek())) { System.out.print("Wrong:" + m.charAt(i)); System.out.print(", expected " +bracketStack.peek()); return false; } else bracketStack.pop(); } // switch } //for if (bracketStack.isEmpty()) return true; while (! bracketStack.isEmpty()) { System.out.print(bracketStack.pop()); System.out.println(" expected"); } return false; } // checkBracketPairs() } // class