《Java 程序设计》课堂实践项目-mini dc
《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 程序设计》课堂实践项目-mini dc的更多相关文章
- 《Java 程序设计》课堂实践项目汇总链接
1.<Java 程序设计>课堂实践项目-命令行参数 2.<Java 程序设计>课堂实践项目-mini dc 3.<Java 程序设计>课堂实践项目-Arrays和S ...
- 《Java 程序设计》课堂实践项目 课后学习总结
<Java 程序设计>课堂实践项目 课后学习总结 String类的使用(sort) 目录 Linux命令(sort) 课堂实践 课后思考 学习老师的代码之后的思考:int与Integer ...
- 《Java 程序设计》课堂实践项目-类定义
<Java 程序设计>课堂实践项目类定义 课后学习总结 目录 改变 类定义实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改. ...
- 《Java 程序设计》课堂实践项目-简易计算器
<Java 程序设计>课堂实践项目简易计算器 课后学习总结 目录 改变 简易计算器实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有 ...
- 《Java 程序设计》课堂实践项目-Arrays和String单元测试
<Java 程序设计>课堂实践项目-Arrays和String单元测试 课后学习总结 目录 改变 Arrays和String单元测试实验要求 课堂实践成果 课后思考 改变 修改了博客整体布 ...
- 20155308 2016-2017-2《Java程序设计》课堂实践项目
20155308 2016-2017-2<Java程序设计>课堂实践项目 在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅 ...
- # 20155308 2016-2017-2《Java程序设计》课堂实践项目 5月17日
20155308 2016-2017-2<Java程序设计>课堂实践项目 5/17 本次因为git出现了问题,所以没有按时提交我的代码 问题一 在IDEA中对P145 MathTool.j ...
- 20155320 2016-2017-2《Java程序设计》第十二周课堂实践项目
20155320 2016-2017-2<Java程序设计>第十二周课堂实践项目 1.修改教材P98 Score2.java, 让执行结果数组填充是自己的学号: 2.在IDEA中以TDD的 ...
- 20155321 2016-2017-2《Java程序设计》课堂实践项目2
20155321 2016-2017-2<Java程序设计>课堂实践项目2 实践内容 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: ...
随机推荐
- JvisualVM的使用【转载】
VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...
- ES 6 装饰器与 React 高阶组件
关于 Decorator 到底是 ES 6 引入的还是 ES 7 引入的我也不是很明白了,两种说法都有,这种问题懒得纠结了--在用的时候发现这个东西很好用,平常用处可能不大,但是结合 React 就很 ...
- php模式设计
1,策略模式 2,个体模式 3,工厂模式 4,观察者模式 <?php class ExchangeRate { static private $instance = NULL; private ...
- DQL、DML、DDL、DCL概念与区别
SQL(Structure Query Language)语言是数据库的核心语言. SQL的发展是从1974年开始的,其发展过程如下:1974年-----由Boyce和Chamberlin提出,当时称 ...
- BZOJ4032:[HEOI2015]最短不公共子串(SAM)
Description 在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之. 一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是. 一个串的“子序列” ...
- 1221. [HNOI2001]软件开发【费用流】
Description 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员 ...
- Pymyaql操作数据库
Pymyaql操作数据库 Python3中专门用于操作Mysql数据库的模块. 一. 导入模块 import pymysql 二. 创建连接 conn=pymysql.connect(host=’12 ...
- PDF压缩,在线压缩免费
https://smallpdf.com/ 一个很牛逼的网站 https://zh.wikihow.com/ https://zh.wikihow.com/%E9%A6%96%E9%A1%B5
- PHPStorm自定义主题配置
1.下载喜欢的主题 官方下载地址:下载 2.将.icls主题文件放到PHPStorm的配置中 windows下主题位置:C:\Users\Administrator\.PhpStorm2017.3\c ...
- Java运算符使用总结(重点:自增自减、位运算和逻辑运算)
Java运算符共包括这几种:算术运算符.比较运算符.位运算符.逻辑运算符.赋值运算符和其他运算符.(该图来自网络) 简单的运算符,就不过多介绍使用了,可自行测试.关于赋值运算,可以结合算术运算和位运算 ...