Java结对编程之挑战出题

需求分析

  • 需求
  • 对于挑战出题来说最主要的就是要产生的式子并将重复的式子去掉。

设计思路

  • 具体的思路:

  • 思路一:

    原先我打算用集合中的元素的不重复性进行去重,这种思路的好处就是在运算符少的时候重复的概率越低,在参加运算的数字比较少的是好用。后来发现在产生大量的运算符参加运算时去重去掉的式子太多,就是说在运算符越多重复数字越多时去掉的式子太多从而大大的降低了运行的速率,就是说时间太长所以就放弃了这种方式。

  • 思路二:

    后来在于同学交流之后就选择了用另外一种去重的方法,就是将结果相同的式子去掉,这个思路的好处就是运算符越多重复的可能性就越低可以产生比较多的式子。

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

  • 入口类
import java.io.IOException;

/**
* Created by 春旺 on 2017/6/4.
*/
public class ExpressionGenerator {
public static void main(String[] args) throws IOException {
OutQuestion questionNumber = new IOPractice();
int num1 = Integer.parseInt(args[0]);
int num2 = Integer.parseInt(args[1]);
questionNumber.problem(num1,num2);
((IOPractice)questionNumber).inFile(args[2]);
}
}

这是为了用工具类在命令行下实现而设计的。

运行过程截图

  • 依次运行的结果

测试

代码托管地址

  • 要运行的是不在文件夹下的ExpressionGenerator类
  • 编译时请老师编译Src文件夹下后缀为.Java的文件。
  • 我们的结对编程的项目在最后的时候克隆在本地地有点问题所以改提交在了我的个人项目中

遇到的问题及其解决方法。

  • 问题1去重

    解决:我去网上找了很多资料之后还是没有找到一个比较好的方法来去重后来就选择了在设计思路中说到的两种方法来进行测试。

    这个问题还没有找到很好的方法来解决。

  • 问题二 测试工具

    测试工具必须在src文件运行后产生的class的文件夹中运行并且代码中不可以有包名否则无法运行

对结对的小伙伴做出评价

  • 结对伙伴: 20162312 张家铖

    结对伙伴的思维比较活跃,在写代码遇到困难时有助于我做出突破,他比较善于和同学交流在我们遇到瓶颈的时候总是可以找同学交流之后找到一个比较好的方法;

    但是也是比较粗心,而且对于时间的把握还有待改善。最主要的是在写代码的注释的时候有些时候有些难懂,并且在写代码时太慢;

给结对伙伴分:

  • 分数 40
  • 依据

    1.代码相对来说我提交的比较多一些。

    2.设计文档都有参与不分多少。

    3.测试中的参与度比较少。

PSP

PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
Planning 计划 1 1
· Estimate · 估计这个任务需要多少时间 20 20
· Analysis · 需求分析 (包括学习新技术) 0.5 2.5
· Design Spec · 生成设计文档 1 1
· Design Review · 设计复审 (和同事审核设计文档) 0.5 0.5
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 1 1
· Design · 具体设计 2 2.5
· Coding · 具体编码 2.5 2.5
· Code Review · 代码复审 2 2.5
· Test · 测试(自我测试,修改代码,提交修改) 2 1
Reporting 报告 1 1.5
· Test Report · 测试报告 2 1.5
· Size Measurement · 计算工作量 1 1.5
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 1 1

Java结对编程之挑战出题的更多相关文章

  1. 20162312Java结对编程之挑战出题

    需求分析 实现去重出题,并以命令行参数形式指定题目要求. 设计思路 具体的思路: 思路一: 原本我和春旺商量通过集合中的元素的不重复性进行去重.但是运算符多也导致重复的数字多,去重的数量也大大增多越到 ...

  2. 20175305张天钰Java结对编程四则运算(二)

    Java结对编程四则运算(二) 一.题目描述及要求 Git提交粒度不要太粗,建议一个文件/一个类/一个函数/一个功能/一个bug修复都进行提交,不能一天提交一次,更不能一周一次,参考Commit Me ...

  3. 20175305张天钰Java结对编程四则运算

    Java结对编程四则运算 一.题目描述:如何对表达式进行求值运算呢 1.中缀表达式与后缀表达式(娄老师讲解) 中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运 ...

  4. Java结对编程四则运算一周小结

    Java结对编程四则运算一周小结 需求分析 对于四则运算来说最主要的就是要计算出产生的式子(字符串的形式). 设计思路 总体可将这个项目分解为几个部分:产生式子,计算式子,判断对错并记录: 具体的思路 ...

  5. JAVA结对编程--阶段总结

    一.需求分析 1.基本需求 随机生成n道题目 支持整数.分数,支持多运算符 能判断正误,错误时给出正确答案 能计算出正确率 2.扩展需求 处理生成题目并输出到文件 完成题目后从文件读入并判题 支持多语 ...

  6. 【java并发编程艺术学习】(二)第一章 java并发编程的挑战

    章节介绍 主要介绍并发编程时间中可能遇到的问题,以及如何解决. 主要问题 1.上下文切换问题 时间片是cpu分配给每个线程的时间,时间片非常短. cpu通过时间片分配算法来循环执行任务,当前任务执行一 ...

  7. Java并发编程的挑战

    并发编程的目的是为了让程序运行得更快,但是,并不是线程启动的越多,就能让程序最大限度地并发执行.并发编程时,会面临非常多的挑战,比如上下文切换的问题,死锁的问题,以及受限于各种硬件和软件的资源限制问题 ...

  8. java并发编程--第一章并发编程的挑战

    一.java并发编程的挑战 并发编程需要注意的问题: 并发编程的目的是让程序运行的更快,然而并不是启动更多的线程就能让程序最大限度的并发执行.若希望通过多线程并发让程序执行的更快,会受到如下问题的挑战 ...

  9. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段

    2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段 最后的一周,时间越来越紧张,因为之前的拖沓和一些事情的耽误,导致了如今的紧张,这一周应该是我们小组效率最高 ...

随机推荐

  1. ASP.NET动态添加控件一例

    第一次单击页面中有3个Label,第二次单击有6个,第三次单击有9个,也就是每次单击要在上次的状态下再添加3个. 我的方法是,可以通过Session来保存上次的状态,一种解法如下: Test.aspx ...

  2. poj 2531(dfs)

    题目链接:http://poj.org/problem?id=2531 思路:由于N才20,可以dfs爆搞,枚举所有的情况,复杂度为2^(n). #include<iostream> #i ...

  3. 基于chrome内核的.NET开发资源

    chrome Frame: 让IE有一颗chrome的心,看起来不错,但我没有深入研究这个东西. http://www.google.com/chromeframe?hl=zh-CN&quic ...

  4. ExtJs4学习(六)MVC中的Model

    Model定义的两种方式 第一种 Ext.define("User",{ extend:"Ext.data.Model", fields:[{ name:'us ...

  5. 如何让VS检查函数和类Comment的添加情况

    问题: 现在有一个大的项目,我不能确定是否每个类和函数是否已经加上了comments,是否每个comments都是标注正确的. VS中有没有检查Comments的功能? 解决方案: 1.右击proje ...

  6. IIS服务中五种身份验证的灵活运用

    微软IIS服务是一项经典的Web服务,可以为广大用户提供信息发布和资源共享功能.身份认证是保证IIS服务安全的基础机制,IIS支持以下5种 Web 身份认证方法: 一.匿名身份认证 如果启用了匿名访问 ...

  7. jQuery animate() - 使用相对值 在值的前面加上 += 或 -=

    也可以定义相对值(该值相对于元素的当前值).需要在值的前面加上 += 或 -=: 实例 $("button").click(function(){ $("div" ...

  8. 创建存储过程修改role密码

    1 创建存储过程 DELIMITER | drop procedure if exists pro_update_role_pwd; CREATE PROCEDURE pro_update_role_ ...

  9. Java 之综合练习

    // 练习一: 写出程序结果 interface A{} class B implements A { public String func() { return "func"; ...

  10. django博客项目6:Django Admin 后台发布文章

    在此之前我们完成了 Django 博客首页视图的编写,我们希望首页展示发布的博客文章列表,但是它却抱怨:暂时还没有发布的文章!如它所言,我们确实还没有发布任何文章,本节我们将使用 Django 自带的 ...