20162316_20162328结对编程第二周阶段总结
2017-05-21 23:46
295 查看
Java结对编程四则运算第二周总结
结对编程项目码云链接需求分析
题目随机出现并具有多种格式。既有整数又有分数的计算。
判断对错并统计正确率。
分辨除法的“/”与分数的“/”。
给出当前所做的题目数量。
设计思路(双栈)
这周和上次的代码比起来变了很多,由于栈的加入使许多内容需要更新一下。主函数是Questions,在主函数中用random和switch来随机选择是整数算数式还是分数式;
Intquestions,这个类用来随机出现一个计算式
InToPost,这个类是将输入的中缀表达式转换成后缀表达式。
PostfixEvaluator,这是用来计算后缀式的类。
实验过程中的关键代码解释
1.根据需要输出不停个数的式子。2.Questions.java中,随机出现整数式,并调用相关的类。
3.这个类在在编写时还写了一个能够显示出压栈出栈的过程的功能,但后来觉得和老师的要求无关,显示出来太累赘,于是在调用时并没有调用这个功能。另外,Stack在这个类中的存在很重要。
public class InToPost {
private Stack theStack;
private String input;
private String output = "";
public InToPost(String in) {
input = in;
int stackSize = input.length();
theStack = new Stack(stackSize);
}
public String doTrans() {
for (int j = 0; j < input.length(); j++) {
char ch = input.charAt(j);
switch (ch) {
case '+':
case '-':
gotOper(ch, 1);
break;
case '*':
case '/':
gotOper(ch, 2);
break;
case '(':
theStack.push(ch);
break;
case ')':
gotParen(ch);
break;
default:
output = output + ch;
break;
}
}
while (!theStack.isEmpty()) {
output = output + theStack.pop();
}
return output;
}
public void gotOper(char opThis, int prec1) {
while (!theStack.isEmpty()) {
char opTop = theStack.pop();
if (opTop == '(') {
theStack.push(opTop);
break;
}
else {
int prec2;
if (opTop == '+' || opTop == '-')
prec2 = 1;
else
prec2 = 2;
if (prec2 < prec1) {
theStack.push(opTop);
break;
}
else
output = output + opTop;
}
}
theStack.push(opThis);
}
public void gotParen(char ch){
while (!theStack.isEmpty()) {
char chx = theStack.pop();
if (chx == '(')
break;
else
output = output + chx;
}
}
class Stack { private int maxSize; private char[] stackArray; private int top; public Stack(int max) { maxSize = max; stackArray = new char[maxSize]; top = -1; } public void push(char j) { stackArray[++top] = j; } public char pop() { return stackArray[top--]; } public char peek() { return stackArray[top]; } public boolean isEmpty() { return (top == -1); }
}
}
4.这个类专门用来随机出现整数式子,用了Random。
5.在postfixEvaluator.java中,这里用来算出扫描进的内容,简单但不可或缺。
6.统计正确数,计算正确率
困难
在过程中最大的困难是在这个地方:在我检查程序时候是发现没有程序的错误的,但是只要整式的计算式,就会出现异常。
后来发现是因为postfixEvaluator.java在读取后缀式的时候必须要求每个char之间都有一个空格。比如:22+10转成后缀若是没有空格就会是:2210+,就不能确定到底是2加210还是什么。
在我加了空格之后就解决了问题。
还有个意外是把一个类名字输入成了Integer.java,带来的结果是许多程序都不能运行了。
总结
我的结对伙伴是20162328蔡文琛,我们之前的java基础都不算很牢固,所以这次的编程任务对我们来说是个巩固自己知识的好时机,而庆幸的是我们抓住了这个机会并完成了它,它让我们收获颇多,这次的编程任务让我们感到很强的成就感。我们在编程过程中,没有明确的角色分配诸如“键盘手”和“领航员”,而是我们划分好了各自的任务,明确需要做的事,不做白费功夫的事。我们在编程过程中时时交流,以保证我们的程序能够相互交融不发生冲突。
美中不足的是我们由于总是分开在自己的项目中编程,在QQ相互发送代码,完成以后才git push,所以提交过程不够精细。
PSP
PSP2.1 | Personal Softwore Process Stage | 预计耗时(分钟) | 实际耗时(分钟)) | 重要成长 |
---|---|---|---|---|
Planning | 计划 | 40 | 60 | |
Estimate | 做这个任务需要多长时间 | 360 | 240 | |
Development | 开发 | 30 | 30 | |
Analysis | 需求分析(包括学习新技术) | 30 | 35 | |
Design Spec | 生成设计文档 | 60 | 40 | |
Design Review | 设计复审(和同事审核设计软件) | 40 | 20 | |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 120 | 180 | |
Design | 具体设计 | 120 | 100 | |
Coding | 具体编码 | 100 | 120 | |
Code Review | 代码复审 | 30 | 15 | |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 15 | |
Reporting | 报告 | 30 | 40 | |
Test Report | 测试报告 | 40 | 50 | |
Size Measurement | 计算工作量 | 10 | 20 | |
Postmortem & Process Improvement Plan | 30 | 10 |
相关文章推荐
- 20162317-20162315结对编程(四则运算)第二周阶段总结
- 20162317-20162315结对编程(四则运算)第二周阶段总结
- 20162303 结对编程项目-四则运算 第二周输出阶段总结博客
- 20162312_20162324结对编程第二周阶段总结
- 20162303 结对编程项目-四则运算 第一周输出阶段总结博客
- 20162311 结对编程项目-四则运算 阶段总结
- 结对编程——阶段总结
- 20162316-20162328 结对编程 挑战出题
- 结对编程项目-四则运算(第二周总结)
- 20162317-20162315结对编程(四则运算)第一周阶段总结
- 结对编程项目-四则运算-第二周总结
- 20162330 结对编程项目-四则运算 第一周 阶段总结
- 20162330 结对编程项目-四则运算 第二周 整体总结
- 结对编程项目-四则运算-第二周阶段总结 20162305李昱兴
- 20162319-20162302结对编程(四则运算)第一周阶段总结
- 20162307 结对编程第二周总结
- 结对编程项目-四则运算 第一周输出阶段总结博客 20162305
- 四则运算 20162315-20162317结对编程 第一周输出阶段总结
- 20162322 朱娅霖 结对编程项目-四则运算 第二周最终版总结
- Space Demon第一阶段总结文档