结对编程项目-四则运算 第一周 阶段性总结

20175227张雪莹 2018-2019-2《Java程序设计》

结对编程项目-四则运算 第一周 阶段性总结

需求分析

  • 自动生成小学四则运算题目(加、减、乘、除)
    • 支持整数
    • 支持多运算符(比如生成包含100个运算符的题目)
    • 支持真分数
  • 统计正确率

设计思路

  • 首先,程序需要读取用户希望做的习题数目,存于后台
  • 其次,程序需要产生1-100随机数字和随机运算符(“+ - * /”)
    • 算式长度要随机
  • 后台要计算产生的随机式子的正确答案并存储
  • 在用户输入数字后,要与正确答案进行比较
    • 若用户做对,则记录正确题数
    • 若用户做错,则输出正确答案
  • 输出用户此次练习的正确率
  • 扩展
    • 产生有无括号的式子
    • 能够计算真分数

UML类图

功能截图

JUnit测试

  • 问题1:XXXXXX
  • 问题1解决方案:XXXXXX
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

代码托管

遇到的困难及解决办法

  • 问题1
    • 一开始打算生成一个储存算式的字符串数组,长度用随机数生成,偶数位存数字,奇数位存运算符,然后用中缀表达式转后缀表达式计算正确结果。后来编译程序时,发现提示空指针错误,并且用中缀转后缀计算程序太过冗杂
  • 问题1及解决方法
    • 求助网络后,和结对伙伴发现了一位网友的在链表中调用JavaScript中eval方法可以直接对字符串求值,于是采用该方法
  • 问题2
    • 由于不了解链表真实含义,导致我们在实际编程中总是出现未知错误
  • 问题2及解决方法
    • 于是我们找到另一种方法:
      通过引入下面这几个包
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

main方法中直接调用eval方法

  • 问题3
    • eval方法不能直接输出算式的值,否则会出现空指针或数据类型错误提示
  • 问题3及解决方法
    • eval值赋给Boolean类型result,存入字符串数组str为如“5+3==7”的逻辑式,直接判断用户输入是否正确;再将eval值赋给输出正确答案字符串数组ca,实现正确答案输出,程序如下:
String str=ex+"="+"="+ua;                 //将用户答案逻辑式放在字符串str中
Boolean result =(Boolean)se1.eval(str);      //用eval方法计算用户答案逻辑式
String ca="="+se2.eval(ex);           //生成correct_answer字符串存正确答案
  • 问题4
    • 统计正确题目数count时,无法将countjudgeFormula中返回,count值仍为0
  • 问题4及解决方法
    • 在参考学姐博客后,选择加入如下包:
      import java.text.NumberFormat;
      调用该类中方法getPercentInstance来返回当前默认语言环境的百分比格式,如下:
NumberFormat num = NumberFormat.getPercentInstance();//调用getPercentInstance方法
……
double T = (double) jud.getTrues()/n;
System.out.println("正确率为:"+num.format(T));

结对总结

  • 在这周的结对学习中,我和我的结对伙伴通过互相配合、帮助、纠正错误,完成了四则运算的阶段学习任务
  • 在编程过程中,我的伙伴为程序寻找了许多方法,提供了很多方案,比如使用链表引入eval方法;并在程序纠错过程中查出了很多错误并改正
  • 在此周结对学习中,我学到了很多知识,知道了eval方法这样简单就能实现计算字符串数组中的内容,可以使用NumberFormat类中getPercentInstance方法来返回当前默认语言环境的百分比格式。最终,我们的程序代码行数虽少却实现了程序所要求拥有的功能

结对学习照片

参考资料

猜你喜欢

转载自www.cnblogs.com/zxy20175227/p/10648889.html