MathX代码初审

1.用户需求分析:见另一篇:https://www.cnblogs.com/Derek-cpp/p/15368018.html

2.整体函数代码初步审查简述:

此部分由本结对小组在根据需求分析的前提下,共同理解代码并试运行后所总结得出,具体如下表:

函数定义

功能理解

初步审查

static String

getAnswer(String equation)

获取中序表达式的计算结果

√

 

String AnswerFromStack(Stack<String> RPNOfEqu)

获取逆波兰表达式的计算结果

在个别次数运行时会出现空栈的异常报错

String add(String a, String b)

将两个数据相加

√

String minus(String a, String b)

将两个数据相减

√

String multiply(String a, String b)

将两个数据相乘

√

String divide(String a, String b)

将两个数据相除

√

static boolean contain(ArrayList<String> equList, String equ)

判断已生成的算式List中是否包含与此式重复的算式

√

static boolean

isRepeated(String equ1, String equ2)

通过运算优先级判断两个算式(中序表达式)是否重复

规定:只有运算顺序一致才判定为重复,如"(1+2)*(2+2)","(2+2)*(2+1)"为不同算式

√

static Stack<String> transform(Stack<String> RPNOfEqu)

将逆波兰式按优先级降序的方式重新排列,并且加和乘(满足交换律)的两个被操作数按升序的方式排列

√

ArrayList<String>

getEquations()

获取所需个数(作为类成员变量传入)的算式,并存入一个List

出现两个运算符的概率远大于其他个数的运算符

String tempEqu(int opeNum)

生成一个符合数据要求且不含括号的中间式

√

String insertBrackets(String tempEqu)

对不含括号的临时式进行插入括号操作,控制括号内必须含有加减

满足控制插入括号的条件情况过少

String getFraction()

获取分数的字符串表达

√

boolean isFalseFraction()

判断是否为假分数

√

static boolean isFraction(String s)

判断是否是分数

√

static Fraction transform(String a)

将整数转化为分母为1的分数,便于运算

√

static boolean isDigit(String num)

判断字符串是否表达整数

√

static int priority(String/char operator)

获取输入符号的优先级,

满足两种类型的输入

√

static boolean validEquation(String tempEqu)

判断当前算式是否合法

√

static boolean validAnswer(int max, int min, String answer)

判断计算结果是否合法

√

static Stack<String> transformToRPN(String equation)

将中序表达式转换成逆波兰表达式

√

static ArrayList<String> toStringArray(String equation)

将算式中的数字和运算符分开存放为数组

√

posted @ 2021-10-05 10:00  Shallowbb  阅读(78)  评论(0)    收藏  举报