首页 > 代码库 > 补结对编程(四则运算)

补结对编程(四则运算)

结对编程(四则运算)
结对伙伴:刘芳芳、于淼
主要用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

补结对编程(四则运算)