此作业要求参见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