20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
一.结对对象
- 姓名:周亚杰
- 学号:20172302
- 担任角色:驾驶员(周亚杰)
- 伙伴第二周博客地址
二.本周内容
(一)继续编写上周未完成代码
1.本周继续编写代码,使代码支持分数类计算
2.相关过程截图
a.下图是上周编写的生成题目的类,不能运行。
下图是本周更新的代码,可以支持分数的产生,红色框内为主要更改区域
b.下图是代码中题目转后缀表达式的部分代码及运行结果截图
c.下图是代码中后缀表达式计算结果的部分代码及运行结果截图
3.关键代码解释
在题目中生成真分数及包含真分数的题目转换为后缀表达式
- 生成真分数:这里我们让产生的随机数含有复数,举例,我们产生-4~9之间的随机数,如果产生随机数为负数,就将一个随机产生的真分数赋给一个String型的figure,如果产生的随机数为0~9,则将此随机数转换为String型的赋给figure,这样就完成了真分数的生成在题目中。
- 含真分数的题目转后缀表达式:我们调用StringTokenizer类中的方法,将上面的题目转换为StringTokenizer类的一个对象,然后使用nextToken()方法,将其分为String的字符串,然后判断字符串的长度,如果字符串长度大于1,就将字符串直接输出,然后下面就是字符串为1的,包括整数和操作符,这个在上周已经解决,包括入栈出栈,都已解决。
- 后缀表达式求值:正在编写中:将所有的数都转换为分数,然后调用之前编写类中的分数的加减乘除方法,然后完成求值,正在编写中。
(二)遇到的困难及解决方法
、
(三)全部代码
第一部分:生成题目 //负责人:侯泽洋
import java.util.Stack;
import java.util.Random;
import java.util.ArrayList;
import java.util.Scanner;class Questions {ArrayList<Object> array = new ArrayList<Object>();Random generator = new Random();char[] newchar = {'+', '-', '*', '/'};protected int number;int NUM;public Questions() {number = 0;}public Object getQuestion(int num) {int num1 = num;while (num > 0) {int figure = (int) generator.nextInt(9) + 1;array.add(figure);number = (int) (Math.random() * 4);array.add(newchar[number]);num--;}String obj = "";while (num < 2 * num1) {obj += array.get(num);num++;}int other = (int) generator.nextInt(9) + 1;array.add(other);obj += other + "=";return obj;}
}
第二部分:题目运算 //负责人:周亚杰,侯泽洋
//生成后缀表达式public class Calculations {public static void main(String[] args) {Questions questions=new Questions();Stack stack = new Stack();Scanner Scan=new Scanner(System.in);char c;int count=0,answer;char[] operation = new char[100];String str = (String) questions.getQuestion(3);System.out.println("请回答以下问题:\n"+str);System.out.println("请输入你的答案:");answer=Scan.nextInt();for (int i = 0; i < str.length(); i++) {c = str.charAt(i);if (c >= '0' && c <= '9') {operation[i] = c;count++;}else {if (c == '*' || c == '/') {if (stack.empty()) {stack.push((char) c);} else if ((char) stack.peek() == '*' || (char) stack.peek() == '/') {operation[i] = (char) stack.pop();stack.push(c);} elsestack.push(c);} else if (c == '+' || c == '-') {if (stack.empty()) {stack.push(c);} else if ((char) stack.peek() == '+' || (char) stack.peek() == '-') {operation[i] = (char) stack.pop();stack.push(c);} else {operation[i] = (char) stack.pop();stack.push(c);}} elsestack.push(c);}}int num = stack.size();for (int a = 0; a < num; a++) {operation[str.length() + a] = (char) stack.pop();}
//后缀表达式计算 //负责人:周亚杰Stack<Integer> stack1 = new Stack<Integer>();int m, n, sum,num1=str.length()+(str.length()-count);for (int b = 0; b <= num1; b++) {if (operation[b] >= '0' && operation[b] <= '9')stack1.push((int) operation[b]-48);else {if (operation[b] == '+') {m = stack1.pop();n = stack1.pop();sum = n + m;stack1.push(sum);} else if (operation[b] == '-') {m = stack1.pop();n = stack1.pop();sum = n- m;stack1.push(sum);} else if (operation[b] == '*') {m = stack1.pop();n = stack1.pop();sum = n * m;stack1.push(sum);} else if (operation[b] == '/') {m = stack1.pop();n = stack1.pop();sum = n / m;stack1.push(sum);}else if (operation[b] == ' ')continue;}}if ((int)stack1.peek()==answer)System.out.println("恭喜你答对了!");elseSystem.out.println("很遗憾,答错了!答案是:"+stack1.peek());
}
}
三.贡献度划分
侯泽洋:50%
周亚杰:50%
四.结对照片
五.评价及感想
本周完成的力度并不是很大,感觉和其他小组有些差距,这个周末要多抽时间追上其他小组进度,下周二完成整个项目的编写。
转载于:https://www.cnblogs.com/hzy0628/p/9011379.html
20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结相关推荐
- 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结
20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: http://www.cnblogs.com/ ...
- 20175208『Java程序设计』课程 结对编程练习_四则运算
20175208 结对编程练习_四则运算(第一周) 结对成员:20175208张家华,20175202葛旭阳 一.需求分析: 实现一个命令行程序,要求: (1)自动生成指定数量的小学四则运算题目(加. ...
- java安装 1723_2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段...
2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段 在一个人孤身奋斗了将近半个学期以后,终于迎来的我们的第一次团队协作共同编码,也就是,我们的第一个结对编程练 ...
- 2017-2018-2 165X 『Java程序设计』课程 助教总结
2017-2018-2 165X 『Java程序设计』课程 助教总结 本学期完成的助教工作主要包括: 编写300道左右测试题,用于蓝墨云课下测试: 发布博客三篇:<2017-2018-2 165 ...
- 20165101刘天野 2017-2018-2 《Java程序设计》 结对编程练习_四则运算(第二周)
20165101刘天野 2017-2018-2 <Java程序设计> 结对编程练习_四则运算(第二周) 一.需求分析 能随机生成n道四则运算题目,n由使用者输入 支持分数运算 支持多运算符 ...
- 20165236 2017-2018-2 《Java程序设计》结对编程练习_四则运算
20165236 2017-2018-2 <Java程序设计>结对编程练习_四则运算 结对小组:叶佺.郭金涛 一.需求分析: 1.能随机生成n道四则运算题目,n由使用者输入: 2.支持多种 ...
- 20172307 结对编程项目-四则运算 第二周 阶段总结
20172307 结对编程项目-四则运算 第二周 阶段总结 (结队项目码云地址) 相关过程截图(关键代码处加了注释) 编写出实现中缀转后缀的类Transform /*Transform.java 作者 ...
- 【万人千题】结对编程排位赛(第一期) 第二周 排名公布,冠军成功卫冕,啊这……
博主会带领大家进行 <C语言入门100例> 和 <算法零基础100讲>的训练,每天把一些知识点巩固后做完相应练习题,和群友一起打卡,如果身边有志同道合之人,也可一起加入,今 ...
- java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第二周:整体性总结)...
#结对对象与其博客链接 20175312陶光远:https://www.cnblogs.com/20175312-tgy/p/10697238.html #需求分析 (一)功能需求 1.自动生成题目( ...
最新文章
- Bash之break、continue和return命令在循环中的作用
- 云从完成超过18亿元新一轮融资,加快上市步伐
- 31 号要和谁跨年呢?
- Sequence在Oracle中的使用
- 蓝桥杯-安慰奶牛(java)
- 阿里云使用笔记-MySQL远程连接-centos7
- 用Saltstack的modules和grains实现实时监控平台
- php curl https 443,PHP CURL支持HTTP、HTTPS 请求亲测可用
- 为什么即使在班级均衡的情况下,准确度仍然令人困扰
- python文本进度条代码解释_python动态文本进度条的实例代码
- 字符串型String
- 记一次nodemanager无法启动的情况
- 阿里云为什么在十三年后重构调度系统?
- 《零基础作曲编曲完全教程》(合辑)崛起的卧室音乐人 编曲教程 作曲教程精进篇
- 看得上瘾的斗鱼,首次开源了自家项目 Jupiter !
- 基于混合策略改进的樽海鞘群算法
- GitLab 如何删除 Forked from
- html中点击声音,如何在HTML中的图像点击中播放声音?
- oracle ebs克隆报错,Oracle EBS R12.1.1 应用克隆 - 2
- 英语会话必须掌握的五种基本结构[转]
热门文章
- tomcat服务器通过配置来部署程序
- HH SaaS电商系统的商品营销角标功能模块设计
- h5jumppage.php,h5使用webviewjsbridge跟原生交互,点击标签调用2次webview
- python3连接oracle数据库真操蛋_为64位Windows7的Python3安装MySQLdb
- oracle 授权 增删改查权限_Oracle增删改查与函数
- 【五】每个球队胜率统计
- python页面驱动mxd_如何利用python 批量导出mxd至jpg
- kettle 资料_Kettle的使用-初级
- mysql 1308_Mysql恢复数据报ERROR 1308 : LEAVE with no matching label_MySQL
- c语言输出星期几的英语表达,C语言程序设计: 输入年月日 然后输出是星期几...