结对编程项目的过程记录与收获

结对编程项目的过程记录与收获

 

1、编程问题

      某公司程序员二柱的小孩上了小学二年级,老师让家长每天出100道(100以内)四则运算题目给小学生做。

2、结对编程的出发点

为了体会结对编程的好处,和同伴一起相互学习,相互监督,相互促进,共同提高。

结队编程对象:高莉萍

对方博客地址:http://www.cnblogs.com/gAoliping/p/5377584.html

双方贡献比例:1:1

3、编程细节

(1)采用语言:java

(2)主要类:CheckClass(负责合法性检查)、ArithmeticTest(给出问题的答案)、Tester(结果输出)

(3)主要代码:

1)、CheckClass

package textFactory;

 

/**

 * @function 检查合法性

 * @author zy

 *

 */

public class CheckClass {

/**

 * @function 检查一个(int)数字是否符合要求

 * @param firstNum

 * @param maxNum

 * @param minNum

 * @return

 */

public static boolean checkNumIsOkOrNot(int Num, int maxNum, int minNum) {

boolean result = false;

if (Num >= minNum && Num <= maxNum) {

result = true;

} else {

result = false;

}

return result;

}// end

 

/**

 * @function 检查一个(double)数字是否符合要求

 * @param Num

 * @param maxNum

 * @param minNum

 * @return

 */

public static boolean checkNumIsOkOrNot(double Num, int maxNum, int minNum) {

boolean result = false;

if (Num >= minNum && Num <= maxNum) {

result = true;

} else {

result = false;

}

return result;

}// end

 

/**

 * @function 检查一个字符串是否为整数

 * @param value

 * @return

 */

public static boolean isInteger(String value) {

try {

Integer.parseInt(value);

return true;

} catch (NumberFormatException e) {

return false;

}

}// end

 

/**

 * @function检查运试算是否符合要求

 * @param firstNum

 * @param secondNum

 * @param maxNum

 * @param minNum

 * @param answer

 * @param symbol

 * @return

 */

public static boolean checkTheTestIsOkOrNot(int firstNum, int secondNum,

int maxNum, int minNum, double answer, char symbol) {

boolean result = false;

switch (symbol) {

case '+':

if (checkNumIsOkOrNot(answer, maxNum, minNum)) {

result = true;

} else {

result = false;

}// end if

break;

case '-':

if (answer >= 0) {

result = true;

} else {

result = false;

}

break;

case '*':

if (checkNumIsOkOrNot(answer, maxNum, minNum)) {

result = true;

} else {

result = false;

}// end if

break;

case '/':

if (isInteger(String.valueOf(answer))) {

result = true;

} else {

result = false;

}// end if

break;

default:

break;

}// end switch

return result;

}// end

}// end class

 

2)、ArithmeticTest

package textFactory;

 

import java.util.ArrayList;

import java.util.Random;

 

public class ArithmeticTest {

int fistNum;

int seconeNum;

double answer;

char symbol;

ArrayList calcultorSymbol = new ArrayList();

 

public ArithmeticTest() {

// TODO Auto-generated constructor stub

}// end

 

public ArithmeticTest(int fistNum, int seconeNum) {

this.fistNum = fistNum;

this.seconeNum = seconeNum;

}// end

 

public ArithmeticTest(int fistNum, int seconeNum, ArrayList calcultorSymbol) {

super();

this.fistNum = fistNum;

this.seconeNum = seconeNum;

this.calcultorSymbol = calcultorSymbol;

}// end

 

/**

 * @function 获取小于 i 的随机数

 * @param i

 * @return

 */

public static int getRandomNum(int i) {

Random random = new Random();

int resNum;

resNum = random.nextInt(i);

return resNum;

}// end

 

/**

 * @function 随机获取一个运算符号

 * @return

 */

public char getSymbol() {

char symbol = '@';

int index = getRandomNum(this.calcultorSymbol.size());

symbol = (char) this.calcultorSymbol.get(index);

return symbol;

}// end

 

/**

 * @function进行四则运算(无括号)

 * @param firstNum

 * @param secondNum

 * @param symbol

 */

public void calcAnswer(int firstNum, int secondNum) {

 

this.symbol = getSymbol();

switch (symbol) {

case '+':

this.answer = firstNum + secondNum;

break;

case '-':

this.answer = firstNum - secondNum;

break;

case '*':

this.answer = firstNum * secondNum;

break;

case '/':

this.answer = firstNum / secondNum;

break;

default:

break;

}// end switch

}// end

 

@Override

public String toString() {

// TODO Auto-generated method stub

String resultTest = fistNum + " " + this.symbol + " " + seconeNum

+ " =";

return resultTest;

}// end

 

}// end class

 

3)、Tester

package textFactory;

 

import java.util.ArrayList;

 

import org.omg.CORBA.TIMEOUT;

 

import staticProperty.StaticPropertyStudy;

 

/**

 * 算式测试与输出

 *

 * @author zy

 *

 */

public class Tester {

public static void main(String[] args) {

int testNum = 30;

int maxNum = 101;

int minNum = 0;

int firstNum;

int secondNum;

 

/*

 * 建立操作符列表

 */

ArrayList symbolList = new ArrayList();

symbolList.add('+');

symbolList.add('-');

symbolList.add('*');

symbolList.add('/');

 

for (int i = 1; i <= testNum; i++) {

boolean checkResult = true;

while (checkResult) {

 

ArithmeticTest arithmeticTest = null;

firstNum = ArithmeticTest.getRandomNum(maxNum);

secondNum = ArithmeticTest.getRandomNum(maxNum);

 

// 创建一个运算式对象

arithmeticTest = new ArithmeticTest(firstNum, secondNum,

symbolList);

arithmeticTest.calcAnswer(arithmeticTest.fistNum,

arithmeticTest.seconeNum);

 

checkResult = CheckClass.checkTheTestIsOkOrNot(firstNum,

secondNum, maxNum, minNum, arithmeticTest.answer,

arithmeticTest.symbol);

if (checkResult) {

System.out.print("第 " + i + " 题: ");

System.out.println(arithmeticTest);

// System.out.println("答案是 --- >" + arithmeticTest.answer);

System.out.println();

checkResult = false;

} else {

checkResult = true;

}// end if

}// end while

 

}// end for

 

}// end main

}// end class

 

(4)运行效果截图

1)、没有答案的输出

 

2)、有答案的输出

 

(5)结对编程照片展示

 

 

4、项目总结

1)结对编程能够比较有效促进程序员的工作进度;

2)编程过程中错误率明显降低;

3)在编程过程中相互都能得到促进;

4)在有分歧的时候,比较花费时间和精力。

 

转载于:https://www.cnblogs.com/Master-zy/p/5377515.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值