结对编程:结对编程技术是指两位程序员坐在同一工作台前开发软件。与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码。
此次作业运用简单的程序提高我们对结对编程的了解以及运用能力。以实现一个简单的可产生多道四则运算式子的程序为目的。通过两个人对四则运算的不同认识和对代码的不同要求来完成一个较好的程序。
我们运用了三个数组来存放相应的数值以及运算符号:
public static int[] firstNum = new int[100];
public static int[] secondNum = new int[100];
public static String[] mark = new String[]{"+","-","*","/"};
通过产生随机数来生产不同的运算式子:
for(int i=0;i<100;i++){
firstNum[i]= rand.nextInt(number) ;
secondNum[i] = rand.nextInt(number);
}
number为输入的范围(例:100 则产生0~100的数)
因此次内容主要是对结对编程的认识,所以在程序的功能上就没有进行太多的要求,只是简单的提供了选择运算的式子道数,对答案有一个简单的限制,并不能进行很准确的判断,在程序健壮性上有很大的缺陷。
下列为简单的代码实现:
package com.lan.soft;
import java.util.Random;
import java.util.Scanner;
public class SizeYunsuan {
//用数组存放进行运算的数值以及符号
public static int[] firstNum = new int[100];
public static int[] secondNum = new int[100];
public static String[] mark = new String[]{"+","-","*","/"};
public static void main(String[] args){
Random rand = new Random();
Scanner input = new Scanner(System.in);
System.out.println("请输入运算数值的范围(0~N):");
int number = input.nextInt();
for(int i=0;i<100;i++){
firstNum[i]= rand.nextInt(number);
secondNum[i] = rand.nextInt(number);
}
System.out.println("请输入产生四则运算的道数:");
number = input.nextInt();
System.out.println("产生四则运算式子:");
for(int j=1;j<=number;j++){
String markYun = mark[rand.nextInt(4)];
System.out.print("第" + j + "道:");
int answerInput = 0;
int isFirstNum = firstNum[rand.nextInt(100)];
int isSecondNum = secondNum[rand.nextInt(100)];
switch(markYun){
case "+":
System.out.println(isFirstNum + "+" + isSecondNum + "=" );
answerInput = isFirstNum + isSecondNum;
break;
case "-":
if(isFirstNum > isSecondNum){
System.out.println(isFirstNum + "-" + isSecondNum + "=" );
answerInput = isFirstNum - isSecondNum;
}
else{
System.out.println(isSecondNum + "-" + isFirstNum + "=" );
answerInput = isSecondNum - isFirstNum;
}
break;
case "*":
System.out.println(isFirstNum + "*" + isSecondNum + "=" );
answerInput = isFirstNum * isSecondNum;
break;
case "/":
System.err.println("提示:结果取整数!");
if(isSecondNum != 0){
System.out.println(isFirstNum + "/" + isSecondNum + "=" );
answerInput = isFirstNum / isSecondNum;
}else{
System.out.println(isFirstNum + "/" + secondNum[rand.nextInt(100)]+1 + "=" );
answerInput = isFirstNum / isSecondNum;
}
break;
}
//进行简单的判断(除法答案取整数)
System.out.print("请输入你的答案:");
int answer = input.nextInt();
while(answer != answerInput){
System.out.print("答案错误,请重新输入:");
answer = input.nextInt();
}
}
input.close();
}
}
上述代码是此次结对编程题目的结果,虽说对代码的写作能力没什么具体的要求,并且在代码中有看似冗余的地方
(在数组中存放随机数,再在数中随机取数)
int isFirstNum = firstNum[rand.nextInt(100)];
int isSecondNum = secondNum[rand.nextInt(100)];
但这是我们此次结对编程的想法体现。
(可以直接在生成运算式的时候产生随机数:例)
for(int i = 0;i < 30;i++){
int firNum = (int)(Math.random()*99 + 1);//生成1到99的随机数
int secNum = (int)(Math.random()*99 + 1);
}
通过这次结对编程的经历我对编程也有了更进一步的了解:
- 每个人对编写代码的想法都是不同
- 对同一个问题(即使很小的问题)从多个角度思考,能有不同的认识
- 结对编程对程序的质量有明显的提升
- 在编写程序中多个人的想法、思路对程序功能有不同的实现方法