58,452
社区成员




public static void main(String[] args) {
String expStr="A/B-C*(D-A*100.123)/B-C";
String expStr1="A:/:B:-:C:*:(:D:-:A:*:100.123:):/:B:-:C";
String[]arrStr;
arrStr=expStr1.split(":");
for(int i=0;i <arrStr.length;i++)
{
if(arrStr[i].equals("+")||arrStr[i].equals("-")||arrStr[i].equals("*")||arrStr[i].equals("/")||arrStr[i].equals("%")||arrStr[i].equals("(")||arrStr[i].equals(")")){
if(isEmpty()||arrStr[i].equals("(")){// stack empty or (
push(arrStr[i]);
}
else{
if(!isEmpty()&&(Precedence(arrStr[i].charAt(0))>=Precedence(myStack[stackLength-1].charAt(0)) || myStack[stackLength-1].charAt(0)=='(') ){
push(arrStr[i]);
} else if (!isEmpty()&&Precedence(arrStr[i].charAt(0))!=0&&(Precedence(arrStr[i].charAt(0)) <Precedence(myStack[length()-1].charAt(0)))){
//if not Precedence(arrStr[i].charAt(0)!=0, then print)
while (!isEmpty() && Precedence(arrStr[i].charAt(0)) <Precedence(myStack[length()-1].charAt(0))) {
System.out.println(topValue());
stackLength--;
}
push(arrStr[i]);
} else if(!isEmpty()&&arrStr[i].compareTo(")")==0){
while(!myStack[stackLength-1].equals("("))
{System.out.println(pop());}stackLength--;
System.out.println(pop());
}
}
} //if
else //display number
System.out.println(arrStr[i]);
} //for
while (!isEmpty())
System.out.println(pop());//打出栈中内容
} // main