Home >Java >javaTutorial >Example of reverse Polish expression implementation in Java

Example of reverse Polish expression implementation in Java

黄舟
黄舟Original
2017-10-18 10:12:191618browse

This article mainly introduces the relevant content of the reverse Polish expression of the Java algorithm. The definition of the reverse Polish expression has been implemented in Java. It has certain reference value. Friends who need it can learn about it.

Reverse Polish expression

Definition: The traditional four arithmetic operations are called infix expressions, that is, the operator is actually between the two operands. of. Reverse Polish expressions are called postfix expressions, and the expression comes after the operand.

Reverse Polish expression:

a+b ---> a,b,+
a+(b-c) ---> a, b,c,-,+
a+(b-c)*d ---> a,b,c,-,d,*,+
a+d*(b-c)--->a ,d,b,c,-,*,+
a=1+3 ---> a=1,3 +

http=(smtp+http+telnet)/ What is written as 1024?
http=smtp,http,+,telnet,+,1024,/

Use Java to implement reverse Polish expression


/**
 * 计算算数表达式的值
 * For example:
 * ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
 * ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
 * @author zl
 * 思路:
 * 这个问题可以通过使用堆栈来解决。
 * (1)我们可以循环遍历给定数组中的每个元素。
 * (2)当它是一个数字,把它推到堆栈。
 * (3) 当它是一个操作符时,从堆栈中弹出两个数字,进行计算,并推回结果。
 *
 */
public class EvaluateValueOfArithmeticExpression {
  private static void evoe(String[] strArr){
    String str = "+-*/";
    Stack<String> stack = new Stack<String>();
    //2.0遍历数组中的每一个元素
    for(String s : strArr){
      if(!str.contains(s)){//如果是数字,放入栈中
        stack.push(s);
      }else{
        int a = Integer.valueOf(stack.pop());
        int b = Integer.valueOf(stack.pop());
        switch(s){
        case "+" :
          stack.push(String.valueOf(a+b));
          break;
        case "-" :
          stack.push(String.valueOf(b-a));
          break ;
        case "*" :
          stack.push(String.valueOf(a*b));
          break;
        case "/" :
          stack.push(String.valueOf(b/a));
          break ;
        }
      }
    }
    System.out.println(stack.pop());
  }
  public static void main(String[] args) {
    //1.0创建数组
    String [] strArr = { "0", "2", "-", "3", "+" };
    evoe(strArr);
  }

Summary

The above is the detailed content of Example of reverse Polish expression implementation in Java. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn