Alright so this is the code I have so far:
public static void main(String[] args) {
String inFix = "2*2+2";
String postFix = InfixToPostfix(inFix);
System.out.println("InFix: " + inFix);
System.out.println("PostFix: " + postFix);
}
public static String InfixToPostfix(String equation) {
int priority = 0;
String result = "";
char temp = equation.charAt(0);
Deque<String> stack = new ArrayDeque<>();
stack.push(temp + "");
for (int i = 1; i < equation.length(); i++) {
temp = equation.charAt(i);
if (Character.isDigit(temp)) {
result += temp;
}
else {
Character operator = stack.peek().charAt(0);
if (operator == '*' || operator == '/')
priority = 1;
else
priority = 0;
if (priority == 1) {
result += stack.pop();
i--;
}
else {
if (temp == '+' || temp == '-') {
result += stack.pop();
stack.push(temp + "");
}
else
stack.push(temp + "");
}
}
}
int length = stack.size();
for (int i = 0; i < length; i++) {
result += stack.pop();
}
return result;
}
This seems to work fine when I DON'T multiply or divide the first set of numbers (ex: 2+22) BUT when I try to divide / multiply the first set (ex: 22+2) everything messes up.
If I put in 22+2 the result ends up being: 222+. BUT If I put in 2+22 the result is 222+. The result should be 222*+ for both cases. What am I doing wrong!?