判断输入的语句的括号是否对应
package testStack;
import java.util.Stack;
/**
* 判断输入的语句的括号是否对应
*
*/
public class GrammerStack {
public static void main(String[] args) {
String str="if((a==b)&&(c==d)||(x==y)) {) }( ";
Stack stack=new Stack<String>();
boolean flag=false;
for(int i=0;i<str.length();i++) {
char ch=str.charAt(i);
if(ch=='(') {
stack.push(ch);
}else if(ch==')'){
if(stack.isEmpty()) {
System.out.println("缺少左括号(");
flag=true;
}
else if((char)stack.peek()=='(') {
stack.pop();
}else if((char)stack.peek()=='{') {
System.out.println("缺少左括号(");
}
}
if(ch=='{') {
stack.push(ch);
}else if(ch=='}') {
if(stack.isEmpty()) {
System.out.println("缺少左括号{");
flag=true;
}
else if((char)stack.peek()=='{') {
stack.pop();
}else if((char)stack.peek()=='(') {
System.out.println("缺少左括号{");
}
}
}
if(!flag&&stack.size()==0) {
System.out.println("该语法正常");
}
else if(stack.size()>0) {
while(!stack.isEmpty()) {
char ch1=(char) stack.pop();
if(ch1=='(') {
System.out.println("缺少右括号)");
}if(ch1=='{') {
System.out.println("缺少右括号}");
}
}
}
}
}