一.结对对象

  • 姓名:周亚杰
  • 学号: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程序设计』课程 结对编程练习_四则运算第二周阶段总结相关推荐

  1. 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

    20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: http://www.cnblogs.com/ ...

  2. 20175208『Java程序设计』课程 结对编程练习_四则运算

    20175208 结对编程练习_四则运算(第一周) 结对成员:20175208张家华,20175202葛旭阳 一.需求分析: 实现一个命令行程序,要求: (1)自动生成指定数量的小学四则运算题目(加. ...

  3. java安装 1723_2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段...

    2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段 在一个人孤身奋斗了将近半个学期以后,终于迎来的我们的第一次团队协作共同编码,也就是,我们的第一个结对编程练 ...

  4. 2017-2018-2 165X 『Java程序设计』课程 助教总结

    2017-2018-2 165X 『Java程序设计』课程 助教总结 本学期完成的助教工作主要包括: 编写300道左右测试题,用于蓝墨云课下测试: 发布博客三篇:<2017-2018-2 165 ...

  5. 20165101刘天野 2017-2018-2 《Java程序设计》 结对编程练习_四则运算(第二周)

    20165101刘天野 2017-2018-2 <Java程序设计> 结对编程练习_四则运算(第二周) 一.需求分析 能随机生成n道四则运算题目,n由使用者输入 支持分数运算 支持多运算符 ...

  6. 20165236 2017-2018-2 《Java程序设计》结对编程练习_四则运算

    20165236 2017-2018-2 <Java程序设计>结对编程练习_四则运算 结对小组:叶佺.郭金涛 一.需求分析: 1.能随机生成n道四则运算题目,n由使用者输入: 2.支持多种 ...

  7. 20172307 结对编程项目-四则运算 第二周 阶段总结

    20172307 结对编程项目-四则运算 第二周 阶段总结 (结队项目码云地址) 相关过程截图(关键代码处加了注释) 编写出实现中缀转后缀的类Transform /*Transform.java 作者 ...

  8. 【万人千题】结对编程排位赛(第一期) 第二周 排名公布,冠军成功卫冕,啊这……

      博主会带领大家进行 <C语言入门100例> 和 <算法零基础100讲>的训练,每天把一些知识点巩固后做完相应练习题,和群友一起打卡,如果身边有志同道合之人,也可一起加入,今 ...

  9. java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第二周:整体性总结)...

    #结对对象与其博客链接 20175312陶光远:https://www.cnblogs.com/20175312-tgy/p/10697238.html #需求分析 (一)功能需求 1.自动生成题目( ...

最新文章

  1. Bash之break、continue和return命令在循环中的作用
  2. 云从完成超过18亿元新一轮融资,加快上市步伐
  3. 31 号要和谁跨年呢?
  4. Sequence在Oracle中的使用
  5. 蓝桥杯-安慰奶牛(java)
  6. 阿里云使用笔记-MySQL远程连接-centos7
  7. 用Saltstack的modules和grains实现实时监控平台
  8. php curl https 443,PHP CURL支持HTTP、HTTPS 请求亲测可用
  9. 为什么即使在班级均衡的情况下,准确度仍然令人困扰
  10. python文本进度条代码解释_python动态文本进度条的实例代码
  11. 字符串型String
  12. 记一次nodemanager无法启动的情况
  13. 阿里云为什么在十三年后重构调度系统?
  14. 《零基础作曲编曲完全教程》(合辑)崛起的卧室音乐人 编曲教程 作曲教程精进篇
  15. 看得上瘾的斗鱼,首次开源了自家项目 Jupiter !
  16. 基于混合策略改进的樽海鞘群算法
  17. GitLab 如何删除 Forked from
  18. html中点击声音,如何在HTML中的图像点击中播放声音?
  19. oracle ebs克隆报错,Oracle EBS R12.1.1 应用克隆 - 2
  20. 英语会话必须掌握的五种基本结构[转]

热门文章

  1. tomcat服务器通过配置来部署程序
  2. HH SaaS电商系统的商品营销角标功能模块设计
  3. h5jumppage.php,h5使用webviewjsbridge跟原生交互,点击标签调用2次webview
  4. python3连接oracle数据库真操蛋_为64位Windows7的Python3安装MySQLdb
  5. oracle 授权 增删改查权限_Oracle增删改查与函数
  6. 【五】每个球队胜率统计
  7. python页面驱动mxd_如何利用python 批量导出mxd至jpg
  8. kettle 资料_Kettle的使用-初级
  9. mysql 1308_Mysql恢复数据报ERROR 1308 : LEAVE with no matching label_MySQL
  10. c语言输出星期几的英语表达,C语言程序设计: 输入年月日 然后输出是星期几...