File tree 1 file changed +38
-0
lines changed
1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java.util.*;
2
+
3
+ public class Postfix {
4
+ public static void main(String[] args) {
5
+ Scanner scanner = new Scanner(System.in);
6
+ String post = scanner.nextLine(); // Takes input with spaces in between eg. "1 21 +"
7
+ System.out.println(postfixEvaluate(post));
8
+ }
9
+
10
+ // Evaluates the given postfix expression string and returns the result.
11
+ public static int postfixEvaluate(String exp) {
12
+ Stack<Integer> s = new Stack<Integer> ();
13
+ Scanner tokens = new Scanner(exp);
14
+
15
+ while (tokens.hasNext()) {
16
+ if (tokens.hasNextInt()) {
17
+ s.push(tokens.nextInt()); // If int then push to stack
18
+ } else { // else pop top two values and perform the operation
19
+ int num2 = s.pop();
20
+ int num1 = s.pop();
21
+ String op = tokens.next();
22
+
23
+ if (op.equals("+")) {
24
+ s.push(num1 + num2);
25
+ } else if (op.equals("-")) {
26
+ s.push(num1 - num2);
27
+ } else if (op.equals("*")) {
28
+ s.push(num1 * num2);
29
+ } else {
30
+ s.push(num1 / num2);
31
+ }
32
+
33
+ // "+", "-", "*", "/"
34
+ }
35
+ }
36
+ return s.pop();
37
+ }
38
+ }
You can’t perform that action at this time.
0 commit comments