import java.util.*;
class Agent
{
private String res;
boolean priorCmpBT(char op1,char op2)
{
switch(op1)
{
case '+':
case '-':
{
switch(op2)
{
case '+':
case '-':
case '*':
case '/':
return false;
case '#':
case '(':
return true;
}
break;
}
case '*':
case '/':
{
switch(op2)
{
case '#':
case '+':
case '-':
case '(':
return true;
case '*':
case '/':
return false;
}
break;
}
default :
return false;
}
return false;
}
String process(char[] s)
{
res="";
Stack<Character> operS=new Stack<Character>();
int i=0;
operS.push('#');
while((i!=s.length)&&(s[i]!='\0'))
{
if(s[i]==' ')
{
i++;
continue;
}
if(Character.isLetter(s[i])||Character.isDigit(s[i]))
{
res+=s[i];// 直接输出结果
System.out.println("the exp is " +res);
}
else
{
switch(s[i])
{
case '+':
case '-':
case '*':
case '/':
{
if(priorCmpBT(s[i],operS.lastElement())) //比栈顶优先级高,直接进栈
{
operS.push(s[i]);
}
else if( operS.lastElement()!= ('(' ) )//比栈的优先级低,,先出栈,然后是s【i】进栈
{
res+=operS.lastElement();
System.out.println("the exp is " +res);
operS.pop();
operS.push(s[i]);
}
break;
}///对于加减乘除的处理
case '(': //直接进站
{
operS.push(s[i]);
break;
}
case ')':
{
while(operS.lastElement()!='(')
{
res+=operS.lastElement();
operS.pop();
}
operS.pop();
break;
}
case '#' :
break;
}//swtich
}//else
i++;
}//while
System.out.println("the exp is " +res);
while(operS.lastElement()!='#')
{
res+=operS.lastElement();
operS.pop();
}
System.out.println("the exp is " +res);
return res;
}//process
}//class