本次使用java语言,实现了四则运算习题的生成。
一、主要功能:
(1)算式个数
(2)是否有乘除法
(3)结果集数值范围
(4)加减法有无负数
(5)除法有无余数
(6)除法出现小数是否支持分数显示
(7)选择生成算式导入的文件
(8)输出打印每行个数
二、代码实现:
(1)IFormulaGeneration
package cn.zhl.software;
import java.util.Map;
public interface IFormulaGeneration {
//加法生成接口,结果范围,加法有无负数,生成个数
public Map Add(int resultRange,boolean is,int num);
//减法生成接口,结果范围,减法有无负数,生成个数
public Map Sub(int resultRange,boolean is,int num);
//乘法生成接口,生成个数
public Map Mul(int resultRange,int num);
//除法生成接口,结果范围,除法有无余数,是否支持分数,生成个数
public Map Div(int resultRange,boolean is,boolean is2,int num);
//检测算式是否存在重复,如果存在返回true
public boolean Repeat(Map,?> map,String formula);
//生成特定范围的数值
public int nextInt(int min, int max);
//化简小数
public String fracReduction(int numerator, int denominator);
//算法生成器:算式个数,是否有乘除法,数值范围,加减法有无负数,除法又无余数,是否支持分数,打印每行个数
public Map FormulaCustom(int formulaNum,boolean if_MulDiv,int range,
boolean ifNeg_AddSub,boolean ifRem_Div,
boolean ifRed_Div,int lineNum);
}
(2)FormulaRealization
package cn.zhl.software;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Set;
public class FormulaRealization implements IFormulaGeneration {
Random random = new Random();
@Override
public Map Add(int resultRange, boolean is, int num) {
if (resultRange < 0) {
resultRange = -resultRange;
}
Map addMap = new HashMap<>();
int r1 = 0, r2 = 0, n = 0;
String formula = "";
for (; n < num; ) {
r1 = nextInt(-resultRange, resultRange);
if (is) {//加法允许出现负数
r2 = nextInt(-resultRange - r1, resultRange - r1);
} else {
r2 = nextInt(-r1, resultRange - r1);
}
formula = (r1 < 0 ? "(" + r1 + ")" : r1) + "+" + (r2 < 0 ? "(" + r2 + ")" : r2);
if (Repeat(addMap, formula)) {
addMap.put(formula, r1 + r2);
n++;
}
}
return addMap;
}
@Override
public Map Sub(int resultRange, boolean is, int num) {
if (resultRange < 0) {
resultRange = -resultRange;
}
Map subMap = new HashMap<>();
int r1 = 0, r2 = 0, n = 0;
String formula = "";
for (; n < num; ) {
r1 = nextInt(-resultRange, resultRange);
if (is) {//加法允许出现负数
r2 = nextInt(-resultRange + r1, resultRange + r1);
} else {
r2