由于电脑突然出了点问题,我没有完成mini DC这个测试,现将测试内容及结果补交

题目如下

提交测试截图和码云练习项目链接,实现Linux下dc的功能,计算后缀表达式的值

  • 代码如下

    • MyDC.class
import com.sun.xml.internal.fastinfoset.util.CharArray;
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)==true) {
op2=stack.pop();
op1=stack.pop();
//从栈中弹出操作数2
//从栈中弹出操作数1
result=evalSingleOp(token.charAt(0),op1,op2);
//根据运算符和两个操作数调用evalSingleOp计算result;
stack.push(result);
//计算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 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;
}
}
* **MyDCTester.class**
import java.util.Scanner;
public class MyDCTester { public static void main (String[] args) {
String expression, again; int result; try
{
Scanner in = new Scanner(System.in); do
{
MyDC evaluator = new MyDC();
System.out.println ("Enter a valid postfix expression: ");
expression = in.nextLine(); result = evaluator.evaluate (expression);
System.out.println ("That expression equals " + result);
System.out.print ("Evaluate another expression [Y/N]? ");
again = in.nextLine();
System.out.println();
}
while (again.equalsIgnoreCase("y"));
}![](http://images2015.cnblogs.com/blog/1071653/201705/1071653-20170503220452023-968944949.jpg) catch (Exception IOException)
{
System.out.println("Input exception reported");
}
}
}
  • 测试截图

最新文章

  1. jQuery.data() 使用方法
  2. jquery 获取父窗口的元素 父窗口 子窗口
  3. mysql支持IOS的Emoji表情
  4. 调整iFrame高度
  5. oradmin相关用法
  6. write_chip,read_chip
  7. UITableView实现格瓦拉飞天投票模块
  8. HDU-2500 做一个正气的杭电人
  9. 【高级算法】模拟退火算法解决3SAT问题(C++实现)
  10. HTML5 Canvas图片操作简单实例1
  11. django-crispy-forms入门指南
  12. 什么是shell? bash和shell有什么关系?
  13. 【二分图最大匹配】Bullet @山东省第九届省赛 B
  14. 【精】EOS智能合约:system系统合约源码分析
  15. SharePoint在管理中心创建Secure Store
  16. MinGW 使用 mintty 终端替代默认终端以解决界面上复制与粘贴的问题
  17. bigdata-02-hadoop2.8.4-resourceHA安装
  18. Windows多线程基础
  19. django 获取前端获取render模板渲染后的html
  20. PHP匿名函数如何理解,什么是匿名函数

热门文章

  1. 通过webview控件访问网页
  2. mysql install steps
  3. SQL简单基础(1)
  4. python中的Lock
  5. 【模板】Tarjan算法与有向图的强连通性
  6. svn .externals 属性
  7. EasyUI Calendar 日历插件,只显示年月。
  8. BigDecimal.setScale用法总结
  9. PAT——1036. 跟奥巴马一起编程
  10. Epoll为我们带来了什么