20172332『Java程序设计』课程结对编程练习_四则运算第二周阶段总结
20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结
小组成员
- 20172326康皓越
- 20172313余坤澎
- 20172332于欣月
小组编程照片
设计思路
- 设计一个生成符号类
- 包括加减乘除和括号
- 设计一个数类
- 包括整数和分数
- 设计一个表达式类
- 需要调用符号类和数类。
- 设计一个运算类
- 对生成的表达式进行处理,
- 然后使之转换成后缀表达式,
- 进而计算出后缀表达式的值。
- 添加判断对错和正确率的方法。
- 在后续的扩展中设计一个文本处理类
- 实现将生成题目写入文件中
- 从文件中读取题目并计算和判题。
重要代码及代码解释
1.数类中的
private int gcd(int num1,int num2)
{
while (num1 !=num2) {
if (num1 > num2)
num1 = num1 - num2;
else
num2 = num2 - num1;
} return num1;
}
private void reduce()
{
if (numerator !=0)
{
int common = gcd(Math.abs(numerator),denominator); numerator = numerator/common;
denominator = denominator/common;
}
}
这两个方法使我们生成的分数进行了约分。
2.生成表达式类中
//先做出括号并且做出括号里的内容
String kuohao = "";
int ge = a.nextInt(2) + 2;
Elements c = new Elements();
c.khq();
kuohao += c;
for (int i = 0; i <= ge; i++) {
Num b = new Num();
b.getNum();
kuohao += b.toString();
int el = a.nextInt(2);
if (el == 0) {
c.add();
kuohao += c;
} else {
c.sub();
kuohao += c;
}
}
Num e = new Num();
e.getNum();
c.khh();
kuohao += e.toString() + c;
先把括号以及括号内的内容创建出来,然后再用随机数去判断括号发在表达式中的位置。
3.生成表达式类中的
//分别判断是否有无加减或乘除,并进行相应的随机添加加减或者乘除法,以保证达到混合运算的目的。
Elements p = new Elements();
Num w = new Num();
w.getNum();
if (count1 != 0 && count2 != 0)
result = result;
else if (count1 == 0) {
Random m = new Random();
int n = m.nextInt(2);
//选择加还是减
if (n == 0) {
p.add();
result += p + w.toString();
} else {
p.sub();
result += p + w.toString();
}
} else {
Random m = new Random();
int n = m.nextInt(2);
//选择乘还是除
if (n == 0) {
p.mul();
result += p + w.toString();
} else {
p.div();
result += p + w.toString();
}
}
因为等级三中无括号的是混合运算,加减其中之一和乘除其中之一必须有,为了防止表达式生成的不符合要求,所以做出了以上代码,判断是否存在加减或乘除,不存在就加上相应所缺的。
4.生成表达式类中的等级三有括号的时候
//分别判断是否有乘除,并进行相应的乘除法添加,以保证达到混合运算的目的。
Elements p = new Elements();
Num w = new Num();
w.getNum();
if (count2 == 0) {
Random m = new Random();
int n = m.nextInt(2);
if (n == 0) {
p.mul();
result += p + w.toString();
} else {
p.div();
result += p + w.toString();
}
} else
result = result;
}
因为括号中就包含了加减,所以只需要判断乘除存不存在的情况
5.计算类中判断正确的方法中
if (result2 - doCal(list) < 0.001 && result2 - doCal(list) > -0.001)
因为IEEE754浮点数的原因,所以可能正确答案与用户所属的正确答案有所差异,所以规定了精确度内,就认为相等。
项目链接
小组结对博客
代码贡献度
| 余坤澎 | 于欣月 | 康皓越 | |
|---|---|---|---|
| 个人贡献度 | 30% | 40% | 30% |
遇到的困难及解决方法
- 困难1:刚开始创建的数类没有约分的方法,所以出现的数了可以约分的数。
- 困难1解决方案1:书中例题之前有一个分数的类,其中就包含了约分的方法。
- 困难2:刚开始我们是一个数必定带一个符号,但是发现括号不好加。
- 困难2解决方案:把数和符号分开,并且先做出括号内容,再把括号加入表达式中。
- 困难3:计算类中乘除类得出的结果不正确。
- 困难3解决方案:暂时还没解决该问题,还需一定时间。
- 困难4:文件处理,如今只能写入文件,还差从文件中读入。
- 困难4解决方案:暂时还没解决该问题,需要看看视频研究一下。
文件扩展(加分项)
- 现只能写入文件,下周改进。
20172332『Java程序设计』课程结对编程练习_四则运算第二周阶段总结的更多相关文章
- 20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结
20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 结对伙伴 20172326康皓越 博客地址(http://www.cnblogs.com/326477465-a/p/90 ...
- 20172326『Java程序设计』课程结对编程练习_四则运算第二周阶段总结
20172326『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 小组成员 20172313 余坤澎 20172332 于欣月 20172326 康皓越 小组编程照片 设计思路 通过一个E ...
- 20172311『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
20172311『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址 对结对伙伴的评价:黄宇瑭同学的优势在于能够想出一 ...
- 20172321『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
20172321『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172324 姓名 :曾程 伙伴第一周博客地址: 对结对伙伴的评价:一个很优秀的同学,在这次项目中 ...
- 20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 结对伙伴博客链接 刘辰同学对编程的积极程度很高,并且在编程能力上很不错,有 ...
- 20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
一.结对对象 姓名:周亚杰 学号:20172302 担任角色:驾驶员(周亚杰) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...
- 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结
20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: http://www.cnblogs.com/ ...
- 2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算 第二周
一.结对对象 姓名:侯泽洋 学号:20172308 担任角色:驾驶员(侯泽洋) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...
- 2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算——第一周
2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算 组队成员: 仇夏 学号: 20172310 博客地址:点击这里 1. 需求分析: 可生成题目: - 输入要想生成 ...
随机推荐
- XML中需要转义的字符
有的数据库表的字段名,对于某些数据库来讲,是属于关键字或者保留字来处理识别的,那么这个时候,需要对这样的字段名进行转义处理,一般在执行sql 语句脚本的情况,处理办法是在这个字段名外加上双引号就可以识 ...
- PHP操作redis之String(字符串)、List(列表)(一)
Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key – value 缓存产品有以下三个特点: Redis支持数据的持久 ...
- Delphi跨平台下的GetTickCount,GetCurrentThreadID
在Windows下只要uses Windows,就有这两个API可调用GetTickCount,GetCurrentThreadID 如果我们需要跨平台使用这两个函数,就不能仅仅Uses Window ...
- python IO模式(多路复用和异步IO深入理解)
1.事件渠道模型.事件渠道为异步IO的原型. 2.IO模式,一次IO调用会经历两个阶段.一.等待数据阶段,将数据从网络或者是磁盘读取到系统内核(kennel) 二.将数据从内核拷贝到进程中. 基于这两 ...
- ubuntu18.04 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)解决方法
出现问题: 最近打开系统之后没声儿,抽空解决以下,谁知道安装的时候出现了这个问题,一看就是锁被占了呗 直接重启大法.....不行,看来是锁分配出问题了,找了个解锁命令 jiang@ryzen:~$ s ...
- Linux入门第五天——shell脚本入门(上)基本概念
一.什么是shell脚本 Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 二.shell入门 1.先导知识 变量知识补充:https://www.cnblogs. ...
- 20155203 《信息安全技术》 实验2 Windows口令破解
实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 系统环境 Windows 实验工具 LC5 SuperDic(密码字典生成器) 实验原理 口令破解方法 口 ...
- 20155207实验2 Windows口令破解
20155207实验2 Windows口令破解 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 实验原理 口令破解方法 口令破解主要有两种方法:字典破解和 ...
- 20155232 2016-2017-2 《Java程序设计》第2周学习总结
20155232 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 类型 基本类型 整数(short.int.long) 字节(byte) -128~127 字 ...
- # 20155337 《Android程序设计》实验四实验报告
20155337 <Android程序设计>实验四实验报告 实验一 实验内容 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPU ...
