public
String toPostFix() {
StringBuilder postfixstr =
new
StringBuilder();
Stack<Token> in_fix =
new
Stack<>();
Stack<Token> post_fix =
new
Stack<>();
for
(int i = tokens.length - 1; i >= 0; i--) {
t =
new
Token(tokens[i]);
in_fix.push(t);
}
while
(!in_fix.
empty
()) {
if
(in_fix.peek().type == 1) {
postfixstr.append(in_fix.pop().toString());
}
else
if
(in_fix.peek().type == 3 && post_fix.
empty
()) {
post_fix.push(in_fix.pop());
}
else
if
(in_fix.peek().type == 3 && in_fix.peek().isOperator() > post_fix.peek().isOperator()) {
post_fix.push(in_fix.pop());
}
else
if
(in_fix.peek().type == 3 && in_fix.peek().isOperator() <= post_fix.peek().isOperator()) {
postfixstr.append(post_fix.pop());
post_fix.push(in_fix.pop());
}
else
if
(in_fix.peek().type == 4) {
post_fix.push(in_fix.pop());
}
else
if
(in_fix.peek().type == 5){
while
(!(post_fix.isEmpty() || post_fix.peek().type == 4)){
postfixstr.append(post_fix.pop());
}
if
(post_fix.isEmpty())
;
else
post_fix.pop();
in_fix.pop();
}
if
(in_fix.
empty
()) {
while
(!post_fix.
empty
()) {
postfixstr.append(post_fix.pop());
}
}
}
return
postfixstr.toString();
}