20155226 mini DC 课堂测试补交
2024-09-24 05:16:01
由于电脑突然出了点问题,我没有完成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");
}
}
}
- 测试截图
最新文章
- jQuery.data() 使用方法
- jquery 获取父窗口的元素 父窗口 子窗口
- mysql支持IOS的Emoji表情
- 调整iFrame高度
- oradmin相关用法
- write_chip,read_chip
- UITableView实现格瓦拉飞天投票模块
- HDU-2500 做一个正气的杭电人
- 【高级算法】模拟退火算法解决3SAT问题(C++实现)
- HTML5 Canvas图片操作简单实例1
- django-crispy-forms入门指南
- 什么是shell? bash和shell有什么关系?
- 【二分图最大匹配】Bullet @山东省第九届省赛 B
- 【精】EOS智能合约:system系统合约源码分析
- SharePoint在管理中心创建Secure Store
- MinGW 使用 mintty 终端替代默认终端以解决界面上复制与粘贴的问题
- bigdata-02-hadoop2.8.4-resourceHA安装
- Windows多线程基础
- django 获取前端获取render模板渲染后的html
- PHP匿名函数如何理解,什么是匿名函数