• 补充结对编程(四则运算)


    结对编程(四则运算)
    结对伙伴:刘芳芳、于淼
    主要用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
  • 相关阅读:
    Unity 类似FingerGestures 的相机跟随功能
    protected 学习
    Unity 学习Json篇
    Unity 动态加载 Prefab
    iTween基础之iTweenPath(自定义路径移动)
    Unity连Photon服务器入门详解
    如何用unity3d实现发送带附件的邮件
    【转】【风宇冲】Unity3D教程宝典之Web服务器篇
    unity Editor编辑器插件脚本学习
    收集整理Android开发所需的Android SDK、开发中用到的工具
  • 原文地址:https://www.cnblogs.com/lffang/p/6069160.html
Copyright © 2020-2023  润新知