import java.util.List; import java.util.Random; /** * 生成初中题目 */ public class JuniorProblem implements ProblemsGenerator { private static final Random RANDOM = new Random(); private final BracketManager bracketManager = new BracketManager(); private final PowerManager powerManager = new PowerManager(); private final ExpressionBuilder expressionBuilder = new ExpressionBuilder(); @Override public String generate() { String expression; boolean hasPower; do { int numCount = RANDOM.nextInt(5) + 1; expression = expressionBuilder.generateBasicExpression(numCount); List numPositions = expressionBuilder.getNumberPositions(expression); if (RANDOM.nextDouble() < 0.8) { int pairs = bracketManager.decideParenthesesPairs(numCount); if (pairs > 0) { expression = bracketManager.addParentheses(expression, pairs, numPositions); } } // 添加幂运算并检查添加是否成功 expression = powerManager.addPowerOperations(expression, numPositions); hasPower = expression.contains("^2") || expression.contains("√"); } while (expressionBuilder.hasDivideByZero(expression) || !hasPower); return expression; } }