mini dc课堂练习补交
2024-09-19 03:03:18
实验截图
实验代码
import java.util.StringTokenizer;
import java.util.Stack;
public class MyDC {
/**
* constant for addition symbol
*/
private final char ADD = '+';
/**
* constant for subtraction symbol
*/
private final char SUBTRACT = '-';
/**
* constant for multiplication symbol
*/
private final char MULTIPLY = '*';
/**
* constant for division symbol
*/
private final char DIVIDE = '/';
/**
* the stack
*/
private Stack<Integer> stack;
public MyDC() {
stack = new Stack<Integer>();
}
public int evaluate(String expr) {
int op1, op2, result = 0;
String token;
StringTokenizer tokenizer = new StringTokenizer(expr);
while (tokenizer.hasMoreTokens()) {
token = tokenizer.nextToken();
//如果是运算符,调用isOperator
if (isOperator(token)) {
op2=(stack.pop()).intValue();//从栈中弹出操作数2
op1=(stack.pop()).intValue();//从栈中弹出操作数1
result=evalSingleOp(token.charAt(0),op1,op2);//根据运算符和两个操作数调用evalSingleOp计算result;
stack.push(new Integer(result));//计算result入栈;
} else//如果是操作数
stack.push(new Integer(Integer.parseInt(token)));//操作数入栈;
}
return result;
}
private boolean isOperator(String token) {
return (token.equals("+") || token.equals("-") ||
token.equals("*") || token.equals("/"));
}
private int evalSingleOp(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;
}
}
代码链接
练习总结
- 1、对于
isOperator()
的调用不够明确。 - 2、计算中间结果的代码为
result=evalSingleOp(token.charAt(0),op1,op2);
。 - 3、操作数入栈需进行强制类型转换
Integer.parseInt(token)
。
最新文章
- nginx基本配置和参数说明
- Daily Scrum – 1/18
- jQuery自定义Web页面鼠标右键菜单
- 项目中oracle存储过程记录——经常使用语法备忘
- iOS开发——C篇&;文件操作
- Entity Framework - Func引起的数据库全表查询
- cocos2d-x 发动机分析:程序如何开始和结束?
- D6
- 仿微信抢红包(js 转)
- UNIX环境高级编程——线程属性
- Callable与Future
- 微信小程序代码大全 - 小程序开发福利
- redis的主从机制 master&;slave
- 4.C#虚方法virtual详解
- 剥开比原看代码09:通过dashboard创建密钥时,前端的数据是如何传到后端的?
- str_replace 批量查找替换字符串
- Solr合并索引方式
- python之sys.stdout、sys.stdin
- mysql 中 时间和日期函数
- eclipse导出maven依赖的jar包
热门文章
- C++计算器项目的初始部分
- 2016424王启元 Exp6信息搜集与漏洞扫描
- java反序列化Commons-Collections5分析
- 当网页失去焦点时改变网页的title值
- 【nodejs】创建第一个应用
- 【JavaScript】富文本编辑器
- Kali-linux使用社会工程学工具包(SET)
- 使用Apache HttpClient 4.5设置超时时间
- UICollectionViewFlowLayout 的 estimatedItemSize 属性
- TabActivity 、fragemnt+fragment 和 Fragment+Viewpager 优缺点