10.20
修改了四则运算中的部分错误
Grade3QuestionGenerator类
点击查看代码
package qixun;
import java.util.Random;
public class Grade3QuestionGenerator extends Grade2QuestionGenerator {
public Grade3QuestionGenerator() {
this.operandCount = 4; // 操作数不超过4个
this.maxOperandValue = 1000; // 操作数范围不超过1000
}
@Override
public String getQuestion() {
Random random = new Random();
StringBuilder question = new StringBuilder();
// 生成最多4个操作数的表达式
for (int i = 0; i < operandCount - 1; i++) {
int operand = random.nextInt(maxOperandValue) + 1;
String operator = generateOperator(); // 调用父类的 generateOperator()
question.append(operand).append(" ").append(operator).append(" ");
}
question.append(random.nextInt(maxOperandValue) + 1); // 最后一个操作数
return question.toString();
}
@Override
public double getAnswer(String question) {
double result = super.getAnswer(question);
return result;
}
}
点击查看代码
package qixun;
import java.util.Random;
public class Grade4QuestionGenerator extends Grade3QuestionGenerator {
public Grade4QuestionGenerator() {
this.operandCount = 5;
}
@Override
public String getQuestion() {
Random random = new Random();
StringBuilder question = new StringBuilder();
// 生成最多5个操作数的表达式
for (int i = 0; i < operandCount; i++) {
if (i > 0) {
// 在每个操作数前添加运算符
String operator = generateOperator();
question.append(operator).append(" ");
}
int operand = random.nextInt(maxOperandValue) + 1;
question.append(operand).append(" ");
// 在特定条件下生成完整的子表达式并放入括号
if (i == 2 && operandCount > 3) { // 在第三个操作数后添加括号
String completeExpression = generateCompleteExpression(random);
question.insert(question.length() - String.valueOf(operand).length() - 1, "(" + completeExpression + ") ");
break; // 插入括号后,退出主循环
}
}
return question.toString().trim(); // 去掉多余空格
}
// 生成一个完整的子表达式
private String generateCompleteExpression(Random random) {
StringBuilder subExpression = new StringBuilder();
int subOperandCount = 2 + random.nextInt(3); // 至少2个操作数,最多4个操作数
for (int j = 0; j < subOperandCount; j++) {
if (j > 0) {
String operator = generateOperator();
subExpression.append(operator).append(" ");
}
int operand = random.nextInt(maxOperandValue) + 1;
subExpression.append(operand).append(" ");
}
return subExpression.toString().trim();
}
}
浙公网安备 33010602011771号