后缀表达式 Java实现
2024-09-02 06:52:49
基本原理:
从左到右扫描字符串:1、是操作数:压栈。 2、是操作符:出栈两个操作数,将运算结果压栈。
扫描字符串通过java.util.Scanner类实现,其next方法可以读取以空格(默认)或指定符号分割的元素。
算法代码:
public class PostfixEvaluator{
private final static char ADD = '+';
private final static char SUBTRACT = '-';
private final static char MULTIPLY = '*';
private final static char DIVIDE = '/'; private Stack<Integer> stack; public PostfixEvaluator() {
stack = new Stack<Integer>();
} public int evaluate(String expr) {
int op1,op2,result=0;
String token;
Scanner parser = new Scanner(expr); while(parser.hasNext()) {
token = parser.next(); if(isOperator(token)) {
op2 = (stack.pop()).intValue();
op1 = (stack.pop()).intValue();
result = evaluateSingleOperator(token.charAt(0),op1,op2);
stack.push((Integer)result);
}else {
stack.push(Integer.parseInt(token));
}
}
return result;
} private boolean isOperator(String token) {
return (token.equals("+") || token.equals("-") ||
token.equals("*") || token.equals("/"));
} private int evaluateSingleOperator(char operation,int op1,int op2) {
int result = 0;
switch(operation) {
case ADD:
result = op1+op2;
break;
case SUBTRACT:
result = op1-op2;
break;
case MULTIPLY:
result = op1*op2;
break;
case DIVIDE:
result = op1/op2;
}
return result;
}
}
最新文章
- yum安装php,php-fpm
- JS魔法堂:ASI(自动分号插入机制)和前置分号
- 让script的type属性等于text/html
- JS 概述
- OK335xS Qt network hacking
- ios 经典错误
- 解决ubuntu 里面vi的时候上下左右是ABCD删除也不起作用
- ZOJ 3699 Dakar Rally(贪心)
- jdk8的新特性 Lambda表达式
- 识别图片中文字(百度AI)
- openSUSE虚拟机安装并连接Xshell
- 微信小程序开发编程手记20190303
- Python3创建项目时创建了一个叫做“keyword";的包,运行项目时报ImportError: cannot import name &#39;iskeyword&#39;错误
- missing 1 required positional argument: &#39;on_delete&#39;报错解决方案
- SQL Server2012中如何通过bak文件还原SQL Server2012数据库
- HTML常用标签1
- 13、spark-submit
- 一些关于SQL优化的总结
- maven package install deploy区别
- 使用V$SQL_PLAN视图获取曾经执行过的SQL语句执行计划