You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.2 KiB
33 lines
1.2 KiB
import java.util.Random;
|
|
|
|
/**
|
|
* 小学题目生成器
|
|
*/
|
|
public class PrimaryQuestionGenerator extends AbstractQuestionGenerator {
|
|
|
|
@Override
|
|
public String generateQuestion(int[] operands, Random random) {
|
|
StringBuilder question = new StringBuilder();
|
|
|
|
// 小学题目:只能有+,-,*,/和(),严格按照附表-2要求
|
|
question.append(operands[0]);
|
|
for (int i = 1; i < operands.length; i++) {
|
|
String op = BASIC_OPERATORS[random.nextInt(BASIC_OPERATORS.length)];
|
|
// 随机添加括号,确保括号内也有运算符
|
|
if (i < operands.length - 1 && random.nextBoolean()) {
|
|
question.append(" ").append(op).append(" (").append(operands[i]);
|
|
if (i + 1 < operands.length) {
|
|
op = BASIC_OPERATORS[random.nextInt(BASIC_OPERATORS.length)];
|
|
question.append(" ").append(op).append(" ").append(operands[++i]).append(")");
|
|
} else {
|
|
question.append(")");
|
|
}
|
|
} else {
|
|
question.append(" ").append(op).append(" ").append(operands[i]);
|
|
}
|
|
}
|
|
|
|
return question.toString();
|
|
}
|
|
}
|