1 package com.liu.Stack;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6
7 import org.junit.Test;
8
9 public class BracketChecker {
10 private String input;
11 public BracketChecker(String in)
12 {
13 input = in;
14 }
15
16 public void check()
17 {
18 int stackSize = input.length();
19 StackX11 theStack = new StackX11(stackSize);
20
21 for(int j=0;j<input.length();j++)
22 {
23 char ch = input.charAt(j);
24 switch(ch)
25 {
26 case '{':
27 case '[':
28 case '(':
29 theStack.push(ch);
30 break;
31
32 case '}':
33 case ']':
34 case ')':
35 if(!theStack.isEmpty())
36 {
37 char chx = theStack.pop();
38 if((ch=='}'&&chx!='{') ||
39 (ch==')'&&chx!='(') ||
40 (ch==']'&&chx!='['))
41 System.out.println("error:"+ch+" at "+j);
42 }
43 else
44 System.out.println("error:"+ch+"at"+j);
45 break;
46
47 default:
48 break;
49 }
50 }
51 if(!theStack.isEmpty())
52 System.out.println("error!");
53 else
54 System.out.println("success!");
55 }
56 }
57
58 class StackX11
59 {
60 private int maxsize;
61 private char[] stackArray;
62 private int top;
63
64 public StackX11(int maxsize)
65 {
66 this.maxsize = maxsize;
67 stackArray = new char[this.maxsize];
68 top=-1;
69 }
70
71 public void push(char c)
72 {
73 stackArray[++top] = c;
74 }
75
76 public char pop()
77 {
78 return stackArray[top--];
79 }
80
81 public char peek()
82 {
83 return stackArray[top];
84 }
85
86 public boolean isEmpty()
87 {
88 if(top==-1)
89 return true;
90 else
91 return false;
92
93 }
94 }
95
96 class BracketsApp
97 {
98
99 public static void main(String[] args) throws IOException
100 {
101 String input;
102 while(true)
103 {
104 System.out.print("enter string containing delimiters:");
105 System.out.flush();
106 input = getString();
107 if(input.equals(""))
108 break;
109 BracketChecker theChecker = new BracketChecker(input);
110 theChecker.check();
111 }
112
113
114
115 }
116
117 public static String getString() throws IOException
118 {
119 InputStreamReader isr = new InputStreamReader(System.in);
120 BufferedReader br = new BufferedReader(isr);
121 String s = br.readLine();
122 return s;
123 }
124
125 }