其他分享
首页 > 其他分享> > 柯源-20200924-5 四则运算试题生成,结对

柯源-20200924-5 四则运算试题生成,结对

作者:互联网

此作业要求参见https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11245

结对小伙伴:赵英伟

要求1 参考《构建之法》第4章两人合作,结对编程上述功能,要求每人发布随笔1篇 (代码是共同完成的,随笔有以下两种方式:(①允许两人写一份,得一份分数,二人均分;②如果每人写一份,内容不得抄袭,体会需要是自己的,分别得到自己博客的分数)。 (1) 给出每个功能的重点、难点、编程收获。(2)给出结对编程的体会,以及 (3) 至少5项在编码、争论、复审等活动中花费时间较长,给你较大收获的事件。 (10分)

答:

一.重难点和收获:

1.功能一:四则运算

效果图:

 

 

 

 

难点和收获:对java的组件进行了熟悉,用组件进行结果的显示。

2.功能二:支持括号

效果图:

难点和收获:逆波兰表达式是这道问题的一个难点,在翻阅资料的过程中理解逆波兰表达式。

3.功能三:支持限定题目数量

效果图:

 

 

 

难点和收获:在生成文件这个步骤遇到了困难,最终通过借助生成txt文件进行打印。

4.功能四:支持分数出题和运算

效果图:

难点和收获:要考虑分数的多种情况,我们分出了如下情况:

情况1:4/8+5  情况2:5+4/8  情况3:4/8+5/2  情况4:5+7
情况1:4/8-5  情况2:5-4/8  情况3:4/8-5/2  情况4:5-7
情况1:4/8*5  情况2:5*4/8  情况3:4/8+5/2  情况4:5*7
情况1:4/8 /5 情况2:5/ 4/8 情况3:4/8/5/2  情况4:5/7
  1 if (item.equals("+")) {
  2                     if(num1.contains("/")&&!num2.contains("/")) {
  3                         //情况1:4/8+5
  4                         String[] split = num1.split("/");
  5 
  6                         int fenZi = Integer.parseInt(num2)*Integer.parseInt(split[1])+Integer.parseInt(split[0]);
  7                         int fenMu = Integer.parseInt(split[1]);
  8                         String yueFen = yueFen(fenZi,fenMu);
  9                         res =yueFen;
 10                     }else if(!num1.contains("/")&&num2.contains("/")) {
 11                         //情况2:5+4/8
 12                         String[] split = num2.split("/");
 13 
 14                         int fenZi = Integer.parseInt(num1)*Integer.parseInt(split[1])+Integer.parseInt(split[0]);
 15                         int fenMu = Integer.parseInt(split[1]);
 16                         String yueFen = yueFen(fenZi,fenMu);
 17                         res =yueFen;
 18 
 19                     }else if(num1.contains("/")&&num2.contains("/")) {
 20                         //情况3:4/8+5/2
 21                         String[] split1 = num1.split("/");
 22                         String[] split2 = num2.split("/");
 23                         int fenZi = Integer.parseInt(split1[0])*Integer.parseInt(split2[1])+Integer.parseInt(split2[0])*Integer.parseInt(split1[1]);
 24                         int fenMu = Integer.parseInt(split1[1])*Integer.parseInt(split2[1]);
 25                         String yueFen = yueFen(fenZi,fenMu);
 26                         res =yueFen;
 27                     }else {
 28                         //情况4:5+7
 29                         res = (Integer.parseInt(num1) + Integer.parseInt(num2))+"";
 30                     }
 31                 } else if (item.equals("-")) {
 32                     if(num1.contains("/")&&!num2.contains("/")) {
 33                         //情况1:4/8-5
 34                         String[] split = num1.split("/");
 35 
 36                         int fenZi = Integer.parseInt(split[0])-(Integer.parseInt(num2)*Integer.parseInt(split[1]));
 37                         int fenMu = Integer.parseInt(split[1]);
 38                         String yueFen = yueFen(fenZi,fenMu);
 39                         res =yueFen;
 40                     }else if(!num1.contains("/")&&num2.contains("/")) {
 41                         //情况2:5-4/8
 42                         String[] split = num2.split("/");
 43 
 44                         int fenZi = Integer.parseInt(num1)*Integer.parseInt(split[1])-Integer.parseInt(split[0]);
 45                         int fenMu = Integer.parseInt(split[1]);
 46                         String yueFen = yueFen(fenZi,fenMu);
 47                         res =yueFen;
 48                     }else if(num1.contains("/")&&num2.contains("/")) {
 49                         //情况3:4/8-5/2
 50                         String[] split1 = num1.split("/");
 51                         String[] split2 = num2.split("/");
 52                         int fenZi = Integer.parseInt(split1[0])*Integer.parseInt(split2[1])-Integer.parseInt(split2[0])*Integer.parseInt(split1[1]);
 53                         int fenMu = Integer.parseInt(split1[1])*Integer.parseInt(split2[1]);
 54                         String yueFen = yueFen(fenZi,fenMu);
 55                         res =yueFen;
 56                     }else {
 57                         //情况4:5-7
 58                         res = (Integer.parseInt(num1) - Integer.parseInt(num2))+"";
 59                     }
 60                 } else if (item.equals("*")) {
 61                     if(num1.contains("/")&&!num2.contains("/")) {
 62                         //情况1:4/8*5
 63                         String[] split = num1.split("/");
 64 
 65                         int fenZi = Integer.parseInt(num2)*Integer.parseInt(split[0]);
 66                         int fenMu = Integer.parseInt(split[1]);
 67                         String yueFen = yueFen(fenZi,fenMu);
 68                         res =yueFen;
 69                     }else if(!num1.contains("/")&&num2.contains("/")) {
 70                         //情况2:5*4/8
 71                         String[] split = num2.split("/");
 72 
 73                         int fenZi = Integer.parseInt(num1)*Integer.parseInt(split[0]);
 74                         int fenMu = Integer.parseInt(split[1]);
 75                         String yueFen = yueFen(fenZi,fenMu);
 76                         res =yueFen;
 77 
 78                     }else if(num1.contains("/")&&num2.contains("/")) {
 79                         //情况3:4/8+5/2
 80                         String[] split1 = num1.split("/");
 81                         String[] split2 = num2.split("/");
 82                         int fenZi = Integer.parseInt(split1[0])*Integer.parseInt(split2[0]);
 83                         int fenMu = Integer.parseInt(split1[1])*Integer.parseInt(split2[1]);
 84                         String yueFen = yueFen(fenZi,fenMu);
 85                         res =yueFen;
 86                     }else {
 87                         //情况4:5*7
 88                         res = (Integer.parseInt(num1) * Integer.parseInt(num2))+"";
 89                     }
 90                 } else if (item.equals("/")) {
 91                     if(num1.contains("/")&&!num2.contains("/")) {
 92                         //情况1:4/8 /5
 93                         String[] split = num1.split("/");
 94 
 95                         int fenZi = Integer.parseInt(split[0]);
 96                         int fenMu = Integer.parseInt(num2)*Integer.parseInt(split[1]);
 97                         String yueFen = yueFen(fenZi,fenMu);
 98                         res =yueFen;
 99                     }else if(!num1.contains("/")&&num2.contains("/")) {
100                         //情况2:5/ 4/8
101                         String[] split = num2.split("/");
102 
103                         int fenZi = Integer.parseInt(num1)*Integer.parseInt(split[1]);
104                         int fenMu = Integer.parseInt(split[0]);
105                         String yueFen = yueFen(fenZi,fenMu);
106                         res =yueFen;
107 
108                     }else if(num1.contains("/")&&num2.contains("/")) {
109                         //情况3:4/8 / 5/2
110                         String[] split1 = num1.split("/");
111                         String[] split2 = num2.split("/");
112                         int fenZi = Integer.parseInt(split1[0])*Integer.parseInt(split2[1]);
113                         int fenMu = Integer.parseInt(split1[1])*Integer.parseInt(split2[0]);
114                         String yueFen = yueFen(fenZi,fenMu);
115                         res =yueFen;
116                     }else {
117                         //情况4:5/7
118                         String yueFen = yueFen(Integer.parseInt(num1),Integer.parseInt(num2));
119                         res =yueFen;
120                     }
121                 } else {
122                     throw new RuntimeException("运算符有误");
123                 }

二.体会:

在团队编程之间,结对编程让我先从个人过渡到团队的一个过程,在结对的过程中,遇到困难可以请教队友一起解决。

三.给我较大收获的事件:

1.在前期讨论的过程中,由于本人对四则运算实现原理不是很清晰,花费了很长的时间去沟通交流,在交流之后我对作业的要求有了新的认识。

2.编程的过程中,两个人的编程风格不同,由于刚刚规定好代码规范,还在适应的过程,所以花费了一些时间去纠正代码风格中不符合规范的部分。

3.在具体实现功能过程中,两个人不是很熟悉逆波兰表达式,各自查阅资料,商议之后决定了一种方式。

4.功能三实现的过程中,解决bug花费了很长时间,不断的调试尽可能地发现bug。

5.在最后复审的过程中,对之前的难点进行了很多次复盘,对特殊数据进行代入。

要求2 给出结对开发的截图证据,要求截图能够证明你们是在结对编程。 (5分)

要求3 使用coding.net做版本控制。checkin 前要求清理 临时文件、可执行程序,通常执行 build-clean可以达到效果。(25分)

 答:https://e.coding.net/zhaoyingwei/size/f4.git

标签:结对,String,num1,yueFen,split,20200924,parseInt,Integer,柯源
来源: https://www.cnblogs.com/keyuan0927/p/13777301.html