Expresión Postfix en Java

MD Aminul Islam 12 octubre 2023
Expresión Postfix en Java

Las expresiones de sufijo son fáciles de evaluar y más rápidas que las expresiones de infijo, ya que no necesitamos manejar ni seguir ninguna regla de precedencia de operadores. Además, las expresiones de sufijo no contienen corchetes.

Podemos resolver rápidamente cualquier expresión de sufijo en Java. En este artículo, aprenderemos cómo evaluar una expresión de Postfix en Java, junto con algunos ejemplos y explicaciones necesarios para facilitar el tema.

Evaluar la expresión Postfix en Java

Antes de comenzar, debemos comprender cómo se calcula una expresión Postfix. Resolvamos un algoritmo de Postfix paso a paso siguiendo la siguiente tabla:

Expression: 82*9+

Character | Stack       |  Explanation
-------------------------------------------
8           8             8 is an Operand and pushed to Stack
2           8 2           2 is an Operand and pushed to Stack 
*           16 (8*2)      * is an Operator. 
                          Poped 8 and 2 and multiply 
                          them. Lastly pushed the result to Stack 
9           16 9          9 is an Operand and pushed to Stack
+           25 (16+9)     + is an operator, 
                          Stack popped 12 and 9 and added them. 
                          Lastly pushed the result to Stack. 

Result: 25

Ya hemos aprendido un ejemplo práctico de cómo podemos resolver un algoritmo de sufijo. Ahora resolvamos la expresión anterior mediante programación usando java. Para resolver un algoritmo de postfijo en Java, puede seguir el siguiente ejemplo:

import java.util.Stack;

public class Postfix {
  // Method to evaluate the postfix expression
  static int EvaluatePostfix(String EXP) {
    // Creating a stack
    Stack<Integer> EqStack = new Stack<>();

    // Scanning all the characters from the expression string
    for (int i = 0; i < EXP.length(); i++) {
      char ch = EXP.charAt(i);

      // If the character is an operator then push it to the stack
      if (Character.isDigit(ch))
        EqStack.push(ch - '0');

      // If the character is the operator, pop two elements for
      // the stack and performs the mathematical operation.
      else {
        int Val_1 = EqStack.pop(); // Getting the first element
        int Val_2 = EqStack.pop(); // Getting the second element

        switch (ch) {
          case '+':
            EqStack.push(Val_2 + Val_1); // Perform add operation
            break;

          case '-':
            EqStack.push(Val_2 - Val_1); // Perform subtraction operation
            break;

          case '/':
            EqStack.push(Val_2 / Val_1); // Perform divide operation
            break;

          case '*':
            EqStack.push(Val_2 * Val_1); // Perform multiply operation
            break;
        }
      }
    }
    return EqStack.pop();
  }

  public static void main(String[] args) {
    String EXP = "82*9+"; // The expression string
    System.out.println("Postfix evaluation result: " + EvaluatePostfix(EXP));
  }
}

Ya explicamos el propósito de cada línea. Después de ejecutar el código de ejemplo anterior, obtendrá el siguiente resultado en su consola.

Postfix evaluation result: 25
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn