《Java 程序设计》课堂实践项目-mini dc
2017-05-04 10:59
225 查看
《Java 程序设计》课堂实践项目-后缀表达式 课后学习总结
目录
改变mini dc实验要求
后缀表达式介绍
课堂实践成果
课后思考
改变
修改了博客整体布局,改变了之前贴个截图粘个代码就糊弄完的观念,这次布局和内容都有修改。加了一些之后也用到更多的实际例子,图片等都是再次运行之后截得细致的图片,电脑上也有原图。
mini dc实验要求
问:提交测试截图和码云练习项目链接,实现Linux下dc的功能,计算后缀表达式的值
后缀表达式介绍
后缀表示法是波兰逻辑学家J.Lukasiewicz于1929年提出的,又叫做逆波兰表达式。Linux命令
dc可以用来对逆波兰式表达式进行求值,
dc的打印类命令:
p:打印栈顶元素并换行
n: 打印栈顶元素并将其弹出栈,完毕后不换行
P: putchar ( int(栈顶元素) % 256) 并弹栈顶,不换行
f: 从栈顶至栈底打印栈中所有值,每个一行
dc的运算符:
+: 依次弹出w1与w2,将w2+w1压栈。精度为结果值精度
-: 依次弹出w1与w2,将w2-w1压栈
*: 依次弹出w1与w2,将w2*w1压栈。精度为结果值精度与precision中较大值
/ : 依次弹出w1与w2,将w2/w1压栈。精度为precision
% : 依次弹出w1与w2,将w2-w2/w1*w1压栈
~ : 依次弹出w1与w2,依次将w2/w1与w2%w1压栈
^ : 依次弹出w1与w2,将w2^((int)w1)压栈。精度为w2精度与precision中较大值
| : 依次弹出w1 w2与w3,将 w3 ^ ((int)w2) (mod w1) 压栈。w1 w3 需为整数
v : 弹出w1,将sqrt(v)压栈。精度为precision
dc支持栈操作:
c : 清空栈
d : 将栈顶元素复制并压栈
r : 交换栈顶两元素 XXX
前中后三种表达式的介绍:
老师的代码就不贴在这里了,没必要故意增加博客内容,而且代码确实有点长
课堂实践成果
代码如下: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(); 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")); } catch (Exception IOException) { System.out.println("Input exception reported"); } } }
实验截图如下:
我们只需要将测试类部分补充上去即可。
需要注意以下两点我做实验时遇到的问题:
输入后最表达式的时候,建议先把完整的中缀表达式书写出来接着在将其整改成课输入的后缀表达式。
规则应当参考入栈出栈规则
可能做得不是没那么深入,没什么其他太多的问题了。
课后思考
介绍下上文所说的入栈出栈的规则,以及输入较为复杂的后缀表达式的分析方法:(如图:例如:a(n-1)先入栈那么它就处于栈顶,因此它也最先出栈。)
课堂上的题目比较简单,举的例子也是非常浅显的例子,那么接下来输入一个较为复杂的表达式
(1+2)*((8-2)/(7-4)),输入如下:
上面输入的就是
(1+2)*((8-2)/(7-4))的后缀表达结果。
下面是用命令行对这段代码进行编译的结果:中间含有我的学号信息。(虽然除了一个0,但结果仍然是0)
学习反思及总结
讲道理这些东西要是放在平时学真的费不了很大功夫,那时候写个博客半个小时就糊弄完了,现在仔细写认真截图,理解含义发现问题解决问题,一篇博客还真起码需要两个小时时间。怪自己标签: Java学习笔记 课堂实践项目总结
相关文章推荐
- 《Java 程序设计》课堂实践项目-类定义
- 《Java 程序设计》课堂实践项目汇总链接
- 2016-2017-2 《Java 程序设计》课堂实践项目
- 《Java 程序设计》课堂实践项目-命令行参数
- 《Java 程序设计》课堂实践项目-Arrays和String单元测试
- 《Java 程序设计》课堂实践项目-简易计算器
- 《Java 程序设计》课堂实践项目-数据库
- Java程序设计 第16周 课堂实践
- 《Java 程序设计》课堂实践一
- 《Java 程序设计》课堂实践三
- Java程序设计 第16周 课堂实践 —— 数据库4
- 《Java 程序设计》课堂实践二
- C++程序设计-第十一周循环结构程序设计上机实践项目
- C++程序设计-第15周数组上机实践项目
- 在objc项目中使用常量的最佳实践(JAVA和as3)好像都是这样
- C++程序设计-第1周温故知新上机实践项目
- 编译原理程序设计实践(一) 项目描述
- awt实现登陆界面+数据库——学java,零基础不怕,不只要理论,更要实践+项目<a href...
- C++程序设计-第13周递归函数及银行系统程序设计上机实践项目
- C++程序设计-第12周函数序设计上机实践项目