|
|
|
|
@ -0,0 +1,34 @@
|
|
|
|
|
import java.text.DecimalFormat;
|
|
|
|
|
import java.util.Random;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 数学题目生成器,根据不同难度生成相应的数学题目(外观类)
|
|
|
|
|
* 将具体生成逻辑委托给对应子类,保持对外 API 不变。
|
|
|
|
|
*/
|
|
|
|
|
public class MathProblemGenerator {
|
|
|
|
|
private final Random random;
|
|
|
|
|
private final DecimalFormat df;
|
|
|
|
|
|
|
|
|
|
public MathProblemGenerator() {
|
|
|
|
|
this.random = new Random();
|
|
|
|
|
this.df = new DecimalFormat("#.##");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据难度生成数学题目
|
|
|
|
|
* @param difficulty 难度级别(小学、初中、高中)
|
|
|
|
|
* @return 生成的数学题目
|
|
|
|
|
*/
|
|
|
|
|
public MathProblem generateProblem(String difficulty) {
|
|
|
|
|
switch (difficulty) {
|
|
|
|
|
case "小学":
|
|
|
|
|
return new ElementaryProblemGenerator(random, df).generate();
|
|
|
|
|
case "初中":
|
|
|
|
|
return new MiddleSchoolProblemGenerator(random, df).generate();
|
|
|
|
|
case "高中":
|
|
|
|
|
return new HighSchoolProblemGenerator(random, df).generate();
|
|
|
|
|
default:
|
|
|
|
|
throw new IllegalArgumentException("不支持的难度级别: " + difficulty);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|