Postfix Evaluation The reason to convert infix to postfix expression is that we
ID: 3803052 • Letter: P
Question
Postfix Evaluation
The reason to convert infix to postfix expression is that we can compute the answer of postfix expression easier by using a stack.
•For example:
•For a postfix expression: 10 2 8 * + 3 -
•We can use stack to solve it
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Create a class with two methods:
•a method named : public static int postfixEvaluate(String s)
•Parameter s is the a postfix expression: all the numbers are int, operators are from +, -, / *,
•The method should return the results
•main method which is used to test the postfixEvaluate(String s)
•Test case:
•"6 8 2 / 1 - *“
•"8 5 * 7 4 2 + * +“
•"2 3 + 4 5 * +"
Explanation / Answer
import java.util.*;
public class Postfix_Main{
public static void main(String []args){
System.out.println(postfixEvaluate("6 8 2 / 1 - *")); // 18
System.out.println(postfixEvaluate("8 5 * 7 4 2 + * +")); // 82
System.out.println(postfixEvaluate("2 3 + 4 5 * +")); // 25
}
public static int postfixEvaluate(String exp) {
Stack<Integer> s = new Stack<Integer> ();
Scanner tokens = new Scanner(exp);
while (tokens.hasNext()) {
if (tokens.hasNextInt()) {
s.push(tokens.nextInt());
} else {
int num2 = s.pop();
int num1 = s.pop();
String op = tokens.next();
if (op.equals("+")) {
s.push(num1 + num2);
} else if (op.equals("-")) {
s.push(num1 - num2);
} else if (op.equals("*")) {
s.push(num1 * num2);
} else {
s.push(num1 / num2);
}
// "+", "-", "*", "/"
}
}
return s.pop();
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.