Postfix-Ausdruck in Java

MD Aminul Islam 12 Oktober 2023
Postfix-Ausdruck in Java

Postfix-Ausdrücke sind einfach auszuwerten und schneller als die Infix-Ausdrücke, da wir keine Vorrangregeln für Operatoren behandeln oder befolgen müssen. Außerdem enthalten Postfix-Ausdrücke keine Klammern.

Wir können alle Postfix-Ausdrücke in Java schnell lösen. In diesem Artikel lernen wir, wie man einen Postfix-Ausdruck in Java auswertet, zusammen mit einigen notwendigen Beispielen und Erklärungen, um das Thema zu vereinfachen.

Postfix-Ausdruck in Java auswerten

Bevor wir beginnen, müssen wir verstehen, wie ein Postfix-Ausdruck berechnet wird. Lassen Sie uns Schritt für Schritt einen Postfix-Algorithmus lösen, indem Sie der folgenden Tabelle folgen:

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

Wir haben bereits ein praktisches Beispiel kennengelernt, wie wir einen Postfix-Algorithmus lösen können. Lassen Sie uns nun den obigen Ausdruck programmgesteuert mit Java lösen. Um einen Postfix-Algorithmus in Java zu lösen, können Sie dem folgenden Beispiel folgen:

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));
  }
}

Wir haben bereits den Zweck jeder Zeile erklärt. Nachdem Sie den obigen Beispielcode ausgeführt haben, erhalten Sie die folgende Ausgabe in Ihrer Konsole.

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