20162316_20162328结对编程第二周阶段总结

Java结对编程四则运算第二周总结

结对编程项目码云链接

需求分析

  • 题目随机出现并具有多种格式。
  • 既有整数又有分数的计算。
  • 判断对错并统计正确率。
  • 分辨除法的“/”与分数的“/”。
  • 给出当前所做的题目数量。

设计思路(双栈)

  • 这周和上次的代码比起来变了很多,由于栈的加入使许多内容需要更新一下。
  • 主函数是Questions,在主函数中用random和switch来随机选择是整数算数式还是分数式;
  • Intquestions,这个类用来随机出现一个计算式
  • InToPost,这个类是将输入的中缀表达式转换成后缀表达式。
  • PostfixEvaluator,这是用来计算后缀式的类。

实验过程中的关键代码解释

  • 1.根据需要输出不停个数的式子。
    1062676-20170521230620432-1191234593.png
  • 2.Questions.java中,随机出现整数式,并调用相关的类。
    1062676-20170521230926900-530815972.png
  • 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。
    1062676-20170521232043963-1737522602.png
  • 5.在postfixEvaluator.java中,这里用来算出扫描进的内容,简单但不可或缺。
    1062676-20170521232351322-2052686212.png
  • 6.统计正确数,计算正确率
    1062676-20170521232549494-1910072102.png

困难

在过程中最大的困难是在这个地方:
1062676-20170521232743197-209189617.png
在我检查程序时候是发现没有程序的错误的,但是只要整式的计算式,就会出现异常。
后来发现是因为postfixEvaluator.java在读取后缀式的时候必须要求每个char之间都有一个空格。比如:22+10转成后缀若是没有空格就会是:2210+,就不能确定到底是2加210还是什么。
在我加了空格之后就解决了问题。

还有个意外是把一个类名字输入成了Integer.java,带来的结果是许多程序都不能运行了。

总结

我的结对伙伴是20162328蔡文琛,我们之前的java基础都不算很牢固,所以这次的编程任务对我们来说是个巩固自己知识的好时机,而庆幸的是我们抓住了这个机会并完成了它,它让我们收获颇多,这次的编程任务让我们感到很强的成就感。

我们在编程过程中,没有明确的角色分配诸如“键盘手”和“领航员”,而是我们划分好了各自的任务,明确需要做的事,不做白费功夫的事。我们在编程过程中时时交流,以保证我们的程序能够相互交融不发生冲突。

美中不足的是我们由于总是分开在自己的项目中编程,在QQ相互发送代码,完成以后才git push,所以提交过程不够精细。

PSP

PSP2.1Personal Softwore Process Stage预计耗时(分钟)实际耗时(分钟))重要成长
Planning计划4060
Estimate做这个任务需要多长时间360240
Development开发3030
Analysis需求分析(包括学习新技术)3035
Design Spec生成设计文档6040
Design Review设计复审(和同事审核设计软件)4020
Coding Standard代码规范 (为目前的开发制定合适的规范)120180
Design具体设计120100
Coding具体编码100120
Code Review代码复审3015
Test测试(自我测试,修改代码,提交修改)2015
Reporting报告3040
Test Report测试报告4050
Size Measurement计算工作量1020
Postmortem & Process Improvement Plan3010

转载于:https://www.cnblogs.com/ignor/p/6886459.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值