结对编程(四则运算)结对伙伴:刘芳芳、于淼主要用java实现编码内容:给小学生出题的四则运算四种运算1-加法2-减法3-乘法4-除法0-退出 四则运算PSP
类别 | 开始时间 | 结束时间 | 间隔时间 | 累计净时间 |
四则运算分析 | 7:30 | 8:00 | 0 | 30分 |
编码 | 8:00 | 10:43 | 0 | 2小时43分 |
总结 | 10:43 | 10:50 | 0 | 7分 |
补充代码函数进度
代码如下:循环遍历运算字符串:
1 private static String interceptOperation(String operationNumber, char a,char b) 2 { 3 String mess = operationNumber; 4 char[] stringOperation = mess.toCharArray(); 5 6 // 循环遍历运算字符串,并做相应的运算 7 for (int i = 0; i < stringOperation.length; i++) { 8 9 // 判断运算符所在的索引 10 if (stringOperation[i] == a || stringOperation[i] == b) { 11 if (i != 0) 12 { 13 // 运算符前的第一个数 14 double num1 = interceptNumIndex(mess.substring(0, i)); 15 16 // 记录第一个数据的长度 17 int frontPosition = intercePosition; 18 19 // 运算符前的第二个数 20 double num2 = interceptNumEnd(mess.substring(i + 1, 21 stringOperation.length)); 22 23 // 记录第二个数据的长度 24 int backPosition = intercePosition; 25 26 // 算完乘除,将结果替换到原来运算的位置,得到新的运算字符串 27 String IndexMess = mess.substring(0, i - frontPosition + 1); 28 String IndexResult = ""; 29 30 // 判断是否运算到最后的结果了 31 if (IndexMess.indexOf(‘+‘) == -1 32 && IndexMess.indexOf(‘*‘) == -1 33 && IndexMess.indexOf(‘/‘) == -1 34 && IndexMess.lastIndexOf(‘-‘) == -1) 35 IndexMess = ""; 36 if (IndexMess != "") 37 IndexResult = IndexMess.lastIndexOf(‘-‘) == IndexMess 38 .length() - 1 ? IndexMess.substring(0, i 39 - frontPosition) : IndexMess; 40 41 // 组装新的运算字符串 42 mess = IndexResult// mess.substring(0,i-frontPosition+1) 43 + reslutString("" + stringOperation[i], num1, num2) 44 + mess.substring(i + backPosition + 1); 45 // 0.111/1212/2/2/2/2/2/2/2 46 if (mess.lastIndexOf(‘-‘) == 0 && mess.indexOf(‘+‘) == -1 47 && mess.indexOf(‘*‘) == -1 48 && mess.indexOf(‘/‘) == -1) { 49 break; 50 } 51 // 回调,继续运算 52 return interceptOperation(mess, a, b);// 1+7-5+89/3+4-6*8/2+4-6 53 } 54 else 55 continue; 56 } 57 if (i == stringOperation.length - 1) 58 { 59 // 递归出口,判断是否还有运算字符串在 60 if (mess.indexOf(‘+‘) != -1 || mess.indexOf(‘-‘) != -1) 61 return interceptOperation(mess, ‘+‘, ‘-‘); 62 break; 63 } 64 } 65 return mess; 66 }
对第二个数进行判断处理:
1 private static double interceptNumEnd(String str) 2 { 3 double a = 0; 4 int InrerceIndex = 0; 5 char[] stringOperation = str.toCharArray(); 6 boolean ispas = false; // 记录是否为负数 7 for (int i = 0; i < stringOperation.length; i++) 8 { 9 switch (stringOperation[i]) { 10 case ‘*‘: 11 case ‘/‘: 12 case ‘+‘: 13 case ‘-‘: 14 InrerceIndex = i; 15 if (i != 0) // 判断该数是否为负数 16 ispas = true; 17 break; 18 default: 19 break; 20 } 21 if (ispas) 22 break; 23 } 24 // 判断此数据是否在运算字符串的最后一位 25 if (InrerceIndex == 0) { 26 a = Double.parseDouble(str); 27 intercePosition = str.length(); 28 if (ispas) 29 intercePosition++; 30 31 } 32 else 33 { 34 a = Double.parseDouble(str.substring(0, InrerceIndex)); 35 // 记录数据的真实长度 36 intercePosition = str.substring(0, InrerceIndex).length(); 37 } 38 return a; 39 }
判断运算方式是否正确:
1 private static boolean ispassString(String messString) 2 { 3 boolean ispass = false; 4 boolean operationIspass = true; // 记录被除数的状态 5 int ai = 0; // 记录是否有运算符号的存在 6 char[] IsString = messString.toCharArray(); 7 int num1 = 0; 8 int num2 = 0; 9 for (int i = 0; i < IsString.length; i++) 10 { 11 // 记录有几对小括号的存在 12 if (‘(‘ == IsString[i]) 13 num1++; 14 if (‘)‘ == IsString[i]) 15 num2++; 16 17 // 判断除数是否为零 18 if (‘/‘ == IsString[i] && IsString[i + 1] == ‘0‘) 19 operationIspass = false; 20 21 // 判断是否输入了运算符合 22 if (IsString[i] == ‘+‘ || IsString[i] == ‘-‘ || IsString[i] == ‘*‘ 23 || IsString[i] == ‘/‘) 24 ai++; 25 26 if (i == IsString.length - 1) 27 if (ai == 0) 28 num2++; 29 } 30 if (operationIspass) 31 if (num1 == num2) 32 ispass = true; 33 return ispass; 34 } 35 }
运行结果如下:
结对编程体会: 结对编程是两个人在一起完成四则运算项目,我自己能力不足,在一起商量的过程中发现对方很多优点是我不及的,那么也让我在这个过程中向自己的小伙伴学习了很多,她熟悉Java,而我只是知道一点点,在Java这一面我可以向她请教。两个人在一起可以有商量的去做项目,两个人可以互通想法,这样每个人都有了两个idea,结对编程很好,让我看到自己的不足,并且改正。
程序参考网址:http://wenku.baidu.com/view/0dda1436ee06eff9aef80718.html
时间: 2024-09-30 09:02:43