结对编程项目-四则运算(第一周)
需求分析
1、支持四则运算(加减乘除)算式的生成
2、支持对于所生成的题目给与答案解析 3、可以让用户作答并且判断答案是否正确 4、可以统计正确率 5、支持括号 6、支持真分式(本周未实现)
设计思路
首先要有一个部分负责算式的生成(四则运算类和算式生成类)
:负责数字和符号的生成
import java.util.Random;public class 四则运算 { int 符号编码, 数字; String 符号; Random 符号随机 = new Random(); Random 数字随机 = new Random(); public 四则运算() { } public String 生成符号(){ 符号编码 = 符号随机.nextInt(4); 符号解析(符号编码); return 符号; } public int 生成数字(){ 数字 = 数字随机.nextInt(100); return 数字; } public void 符号解析(int a){ if (a==0) 符号 = "+"; else if(a==1) 符号 = "-"; else if (a==2) 符号 = "*"; else if (a==3) 符号 = "/"; } public String toString(){ return 数字+符号; }}
:是四则运算类的子类,负责调用父类的方法根据用户的需求以字符串的形式生成单个算式
import java.text.DecimalFormat;public class 生成算式 extends 四则运算 { int 阶数, 数字; String 算式, 符号; DecimalFormat fmt = new DecimalFormat("0"); public 生成算式 (int n){ 阶数 = n; 生成(阶数); } public String 生成(int j){ 数字 = 生成数字(); 算式 = fmt.format(数字); 算式 = 算式.concat(" "); for(int i=1; i
然后是运算式子的类,使其可以生成以便于判断答案(算式运算器类和格式转换器类)
:使用到了栈的方法可以运算后缀表达式,在更新以后又可以作为格式转换器的子类进行一步转换并运算,使其也可以支持前缀表达式。:专门用于转换中缀式为后缀式的类。
代码篇幅过大转换和运算都要用到栈
格式转换器
最后要有驱动器
:负责调用运算器和生成器达到生成算式和答案的目的。在命令行里面输出算式,然后由用户来作答,系统可以判断答案是否正确并给出正确率。
import java.util.Scanner;import java.text.NumberFormat;public class 驱动器 { public static void main (String[] args){ int 正确个数=0; Scanner scan = new Scanner(System.in); NumberFormat 百分比形式 = NumberFormat.getPercentInstance(); 生成算式 a = new 生成算式(2); 算式运算器 s = new 算式运算器(); 格式转换器 g = new 格式转换器(); String b = a.生成(2); String b1 = g.stringToArithmetic(b); int answer1 = s.运算(b1); System.out.print(b+"= "); int Answer1 = scan.nextInt(); if (answer1 == Answer1) { System.out.println("√"); 正确个数 ++; } else System.out.println("×");UML图
Junit测试
JUnit测试中缀表达式转化为后缀表达式的转换器
JUnit测试两种引用(直接引用转换并计算和分步骤转换和计算)方式答案是否一样运行截图
合作伙伴
- 姓名:莫礼钟
- 学号:20162319
博客链接: