补结对编程(四则运算)

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

补结对编程(四则运算)的相关文章

作业四:结对编程——四则运算

项目名称:结对编程——四则运算(GUI) 同学小伙伴:张富彬 博客园地址:http://www.cnblogs.com/legend07/ GitHub代码地址:https://github.com/8561549/Arithmetic2.0/tree/master/Arithmetic2.0 需求分析: 首先是实现GUI的界面设计,主要有两个窗体,一个窗体进行参数设计,另一个窗体负责显示题目.两个窗体之间实现自由跳转.在参数设置窗口可以获取各个控件中的信息,能对出题窗口的出题情况进行限制,其中

结对编程——四则运算(第一周)

结对编程--四则运算(第一周) 需求分析 题目要求 一个命令行程序实现: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 需求理解 输入:需要计算的式子数.计算结果 输出:判断后的答案(true/false) 满足真分数的运算如:1/3 + 1/4 = 7/12 处理的运算符为 +, ?, ×, ÷ 能处理用户的输入,并判断对错,统计正确率. 设计思路 自动生成四则运算,需要用到随机数,用随机数随机生成数字,以及随机

结对编程-四则运算 第一周总结

结对编程-四则运算 第一周总结 小组成员 20172313 余坤澎 20172332 于欣月 20172326 康皓越 需求分析 可以生成不同种类的题目 根据用户的需求来生成不同的题目 计算时生成真分数和整数,且结果为分数形式输出 可以输出括号 可以判断用户的正确 设计思路 第一种 设计一个level1类,只负责加减 设计一个level2类,只负责乘除 设计一个level3类,只负责加减乘除 设计一个转化类,将上述的类生成的表达式转换成计算式 比对结果类 缺点 在将括号进行插入时出现问题,难以将

20172316 结对编程-四则运算 第一周 阶段总结

20172316 结对编程-四则运算 第一周 阶段总结 1.项目内容 以结对小组形式编写代码,实现以下功能: 1.自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目,类似于: 1级题目:2 + 5 = 10 - 5 = 之类的两个数,一个运算符的题目 2.题目运算(判题) 可独立使用 实现中缀表达式转为后缀表达式并计算 判断用户答题正误,并输出正确结果 3.支持真分数 可独立使用 实现分数算式的计算 4.题目去重(扩展需求,加分项) 可独立使用 实现对自动生成

20172316 结对编程-四则运算 第二周 阶段总结

20172316 结对编程-四则运算 第二周 阶段总结 1.项目内容 以结对小组形式编写代码,实现以下功能: 1.自动生成题目 2.题目运算(判题) 3.支持真分数 4.生成题目添加括号 5.题目去重(扩展需求,加分项) 6.文件处理(扩展需求,自行学习,加分项) 相关过程截图 最开始的代码名称十分不规范,有的使用拼音,有的使用英文,有的不知所云,其他组员第一次看见名称时不容易理解和衔接起来: 出现了两个程序之间符号表示的差异,对于式子的值的计算有很大影响: 结对评价 唐才铭 王文彬 关键代码解

结对编程--四则运算(Java实现)

结对编程--四则运算(Java实现) 四则运算 (JAVA ) By 梅进鹏 欧思良 Github项目地址:https://github.com/MeiJinpen/Arithmetic 功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 功能(已全部实现) 使用 -n 参数控制生成题目的个数 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的范围(此处感觉一个参数不太合理,因此改用 -r 参数控制自然数.带分数整数部分的范围,又额外添加了 -d 参数控制分数分母的范围,增

软件工程项目之二:结对编程——四则运算生成计算程序

0x01 :简介 本次的编程任务是完成一个具有UI界面的,具备四则运算生成.计算.判断对错功能的程序.本次程序使用C#语言编写,用时为2周. 0x02 :软件工程和PSP表格记录 PSP 2.1 Persinal Software Process Stages Time(Estimated) Time(Real) Planning 计划     Estimate 估计这个任务需要多少时间 24h 36h Development 开发     Analysis 需求分析(包括学习新技术) 8~10

【week2】结对编程-四则运算 及感想

首先我要说一下,我得作业我尽力了,但是能力有限,还需练习. 四则运算,改进代码流程: 1.手动输入算式(属于中缀表达式) 2.将中缀表达式转化成后缀表达式 生成out数组 3.一个操作数栈,一个运算符栈,按照后缀表达式计算方法将out中的字符分别放入两个栈 4.当操作数栈只有一个数时结束计算. 代码分段解析如下: 中缀变后缀: public List<String> SolveOrder(String[] in,HashMap<String,Integer>precedence){

作业四——结对编程四则运算

1. 结对编程项目---四则运算 此次编程项目的结队伙伴是方春阳 学号:130201129 计科13-1 博客地址 http://www.cnblogs.com/fcy29/ 根据要求我们设计了以下程序: 主界面: 在该页面下,可以看到此四则运算的主要功能,可以自行选择数的范围,系统默认值为1-100之间,超出这个范围并未得以实现,输入要生成题目的数量,然后按要求选择在算式中是否有乘除.负数.括号及真分数等功能,选择完成后,选好生成方式,点击确定.就可在框中自动生成算式.单击退出按钮便可退出该程