Question

In: Computer Science

Postfix Evaluation (JAVA PROGRAMMING) Write class PostfixEva1uator that evaluates a postfix expression such as 6 2...

  1. Postfix Evaluation (JAVA PROGRAMMING)

Write class PostfixEva1uator that evaluates a postfix expression such as 6 2 + 5 * 8 4 / -

The program should read a postfix expression consisting of single digits and operators into a StringBuilder, The program should read the expression and evaluate it (assume it's valid). The algorithm to evaluate a postfix expression is shown below. Use +, -, *, /, and ^. ^ is the exponent.

Append a right parenthesis ') ' to the end of the postfix expression. When the right-parenthesis character is encountered, no further processing is necessary.

Until the right parenthesis is encountered, read the expression from left to right.

if the current character is a digit, do the following:

Push its integer value onto the stack

else, if the current character is an operator:

Pop the two top elements of the stack into variables x and y.

Calculate y operator x.

Push the result of the calculation onto the stack.

End until when the right parenthesis is encountered in the expression,

Pop the top value of the stack. This is the result of the postfix expression .

[Note: (based on the sample expression at the beginning of this exercise), if the operator is '/', the top of the stack is 4 and the next element in the stack is 40, then pop 4 into x, pop 40 into y, evaluate 40 / 4 and push the result, 10, back on the stack. This note also applies to other operators.] The arithmetic operations allowed in an expression are: + (addition), - (subtraction), '' (multiplication),/ (division), A (exponentiation) and x (remainder).

You willy want to use the following methods:

a) Method evaluatePostfixExpression, which evaluates the postfix expression. It is called from main. (20)

b) Method calculate, which evaluates the expression opl operator op2. Called from evaluatePostfixExpression. (20)

c) Method printStack which prints out the stack after each push or pop. Called from evaluatePostfixExpression (multiple times) (20)

This example can all be done in a single class.

The main program simply request the postfix expression. Remember to leave a space between each digit and/or operator. (10)

Sample input/output

Please enter a postfix expression:

6 2 + 5 * 8 4 / -

The original postfix expression is:

6 2 + 5 * 8 4 / -

6

6

2

6

8

8

5

8

40

40

8

40

8

4

40

8

40

40

2

40

38

The value of the expression is: 38

Another Example:

Please enter a postfix expression:

4 5 + 3 / 4 ^ 2 -

The original postfix expression is:

4 5 + 3 / 4 ^ 2 -

4

4

5

4

9

9

3

9

3

3

4

3

81

81

2

81

79

The value of the expression

Solutions

Expert Solution

import java.util.Stack;

class Main
{
   // Function to evaluate given postfix expression
   public static int postfixEval(String exp)
   {
       // create an empty stack
       Stack<Integer> stack = new Stack<>();

       // traverse the given expression
       for (char c: exp.toCharArray())
       {
           // if current char is an operand, push it to the stack
           if (Character.isDigit(c)) {
               stack.push(c - '0');
           }
           // if current char is an operator
           else
           {
               // pop top two elements from the stack
               int x = stack.pop();
               int y = stack.pop();

               // evaluate the expression x op y, and push the
               // result back to the stack
               if (c == '+') {
                   stack.push(y + x);
               }
               else if (c == '-') {
                   stack.push(y - x);
               }
               else if (c == '*') {
                   stack.push(y * x);
               }
               else if (c == '/') {
                   stack.push(y / x);
               }
           }
       }

       // At this point, the stack is left with only one element i.e.
       // expression result
       return stack.pop();
   }

   public static void main(String[] args)
   {

       System.out.println(postfixEval(138*+));
   }
}


Related Solutions

IN JAVA PLZ follow all directions SHOW OUPUT! Write class PostfixEvaluator that evaluates a postfix expression...
IN JAVA PLZ follow all directions SHOW OUPUT! Write class PostfixEvaluator that evaluates a postfix expression such as 6 2 + 5 * 8 4 / - The program should read a postfix expression consisting of single digits and operators into a StringBuilder, The program should read the expression and evaluate it (assume it's valid). The algorithm to evaluate a postfix expression is shown below. Use +, -, *, /, and ^. ^ is the exponent. Append a right parenthesis...
The following postfix expression 2 6 + 3 5 - / evaluates to Group of answer...
The following postfix expression 2 6 + 3 5 - / evaluates to Group of answer choices -1 1 -4 4 this is not a postfix expression In an array implementation of the StackInterface where push() and pop() are O(1), the top of the stack is Group of answer choices the first entry in the array the last occupied entry in the array the second entry in the array the entry before the last ocuppied entry in the array the...
C++ OOP •Write a program that evaluates a postfix expression (assume it’s valid) such as 6...
C++ OOP •Write a program that evaluates a postfix expression (assume it’s valid) such as 6 2 + 5 * 8 4 / - •The program should read a postfix expression consisting of digits and operators into a string. •The algorithm is as follows: 1.While you have not reached the end of the string, read the expression from left to right. –If the current character is a digit, Push its integer value onto the stack (the integer value of a...
For this assignment you will write a class that transforms a Postfix expression (interpreted as a...
For this assignment you will write a class that transforms a Postfix expression (interpreted as a sequence of method calls) into an expression tree, and provides methods that process the tree in different ways. We will test this using our own program that instantiates your class and calls the expected methods. Do not use another class besides the tester and the ExpressionTree class. All work must be done in the class ExpressionTree. Your class must be called ExpressionTree and have...
Using Java 8. Write a program that reads an expression in postfix notation, builds the expression...
Using Java 8. Write a program that reads an expression in postfix notation, builds the expression tree and prints the expression in prefix and infix notation and evaluates the expression. (Hint use a stack)
Write a class Lab7 that reads and evaluates postfix expressions contained in a file. Each line...
Write a class Lab7 that reads and evaluates postfix expressions contained in a file. Each line of the file contains a postfix expression with integers as operands and ‘+’, ‘-’, ‘*’ and ‘/’ as operators. Consecutive operands and operators are separated by spaces. Note the following requirements for the lab: • The main method in Lab7.java should do the following. 1. ask the user for the name of the file containing the expressions, 2. for each line of the file,...
write a java program tht evaluates postfix expressions. args[0] = the output file the answer will...
write a java program tht evaluates postfix expressions. args[0] = the output file the answer will print to
Write a class PostFix that has one method covert that converts an infix expression (as a...
Write a class PostFix that has one method covert that converts an infix expression (as a string input) to a postfix. Then Test it in a different class. code in java.
Convert an infix expression to its postfix representation in JAVA
Convert an infix expression to its postfix representation in JAVA
Convert the expression into postfix notation 19 + 2 ∗ 5  + (1 - 6/(1 ∗ 2))
Convert the expression into postfix notation 19 + 2 ∗ 5  + (1 - 6/(1 ∗ 2))
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT