public class StackX {
private int maxSize;
private char[] stackArray;
private int top;
//栈构造方法
public StackX(int max){
stackArray = new char[max];
top = -1;
maxSize = max;
}
//入栈
public void push(char ch){
stackArray[++top] = ch;//top先自增1在执行表达式
}
//出栈
public char pop(){
return stackArray[top--];//执行表达式后top自减1
}
//查看栈顶
public int peek(){
return stackArray[top];
}
//判断是为空
public boolean isEmpty(){
return top==-1;
}
//判断栈是否满
public boolean isFull(){
return top==(maxSize-1);
}
}
class BracketChecker{
private String input;
public BracketChecker(String str){
input = str;
}
public void check(){
int maxSize = input.length();
StackX theStack = new StackX(maxSize);
for(int i=0; i<maxSize; i++){
char ch = input.charAt(i);
switch(ch){
case '{':
case '[':
case '(':
theStack.push(ch);
break;//结束循环
case '}':
case ']':
case ')':
if(!theStack.isEmpty()){// if stack not empty
char chx = theStack.pop();
if((ch == '}' && chx != '{')
||(ch == ']' && chx != '[')
||(ch == ')' && chx != '(')){
System.out.println("Error: "+ch+" at "+i);
}
}
else
System.out.println("Error: "+ch+" at "+i);
break;
default:
break;
}//end switch
}//end for
}//end check
}
public class BracketApp {
public static void main(String[] args) throws IOException{
String input ;
int i=0;
while(true){
System.out.println("enter String");
input = getString();
if(" ".equals(input))
break;
BracketChecker check = new BracketChecker(input);
check.check();
i++;
System.out.println(i);
}//end while
}//end main
public static String getString() throws IOException{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader bs = new BufferedReader(isr);
String str = bs.readLine();
return str;
}
}