这次老师又给我们提出了一个新的项目——结对编程。经老师的解释,我的理解就是:结对编程就是两个人使用一台笔记本进行编程,其中一人负责坐在电脑面前敲代码,另外一人在其旁边提供思路或者检查是否有逻辑错误或者语法错误。
老师给我们的结对题目是:某公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道(100以内)四则运算题目给小学生做。二柱立马就想到写一个小程序来做这件事。这个事情可以用很多语言或者工具来实现:•Excel、C/C++、Java、C#、VB、Unix Shell、Vbscript、Javascript、Perl、 Python、… 然后假如我们是二柱,我们会怎么编写这个程序?
对于这题,我首先想到了一些问题:首先是生成的运算题目它的结果不能超过100还是运算里的两个元素不能超过100,考虑到二年级小学生,我就选择了前者。这样又提出怎么解决这问题,我是用随机函数生成两个元素和运算符号的方法,但 + 、-、 *、 / 所要考虑的问题是不一样的,那我是先随机生成一个元素和运算符还是先生成两个元素再来生成符合的运算符......
由于一个人思想的局限性,有很多的地方考虑不到又或是考虑的过多进入了死胡同。最后通过和结对的队友一起讨论,通过团队合作,将大家的想法总结到一起,才设计出更加完善的程序。对于这次的结对编程的初体验,我对结对项目了解到的好处有:
1. 结对编程整个过程中虽然所花时间会增加,但却会减少bug量;
2.一边编程,一边讨论,相互讨论可以得到更多的思路和解决方案;
3.两人在进行学习的同时,增加两人之间的了解,让队员之间跟融洽。
代码:
public static void p(Object o){
System.out.print(o);
}
public static void pln(Object o){
System.out.println(o);
}
public static void MyResult(int in,int answer){
if(in==answer) pln("恭喜你,答对了");
else pln("正确答案是:"+answer+",加油!");
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int q1,q2,answer,operater;
int myIn;
int i=0;
Random random=new Random();
while(i<30){
operater=random.nextInt(4);
switch(operater){
case 0:
q1=random.nextInt(100);
q2=random.nextInt(100-q1);
answer=q1+q2;
p(q1+"+"+q2+"=");
myIn=in.nextInt();
MyResult(myIn, answer);
break;
case 1:
q1=random.nextInt(100);
q2=random.nextInt(q1);
answer=q1-q2;
p(q1+"-"+q2+"=");
myIn=in.nextInt();
MyResult(myIn, answer);
break;
case 2:
q1=random.nextInt(100);
q2=random.nextInt(100/q1);
answer=q1*q2;
p(q1+"*"+q2+"=");
myIn=in.nextInt();
MyResult(myIn, answer);
break;
case 3:
q1=random.nextInt(100);
q2=random.nextInt(100/q1);
int temp=q1-q1%q2;
answer=temp/q2;
p(temp+"/"+q2+"=");
myIn=in.nextInt();
MyResult(myIn, answer);
break;
}
i++;
}
}