ADD file via upload

lizihan_branch
hnu202326010302 6 months ago
parent 59f86d258b
commit 0ab3df6e53

@ -0,0 +1,80 @@
// AbstractQuestionSeting.java
package com.example.myapp.service;
import com.example.myapp.model.Expression;
import java.util.Random;
public abstract class AbstractQuestionSeting implements QuestionSeting {
protected Random rand = new Random();
// 只生成整数1-50
protected String getRandomNumber() {
int num = 1 + rand.nextInt(50);
return String.valueOf(num);
}
// 生成完全平方数(用于开方运算)
protected String getPerfectSquare() {
int base = 1 + rand.nextInt(12); // 1-12的平方
int square = base * base;
return String.valueOf(square);
}
// 生成适合开方的数(完全平方数)
protected String getNumberForSqrt() {
// 80%概率生成完全平方数20%概率生成普通数
//if (rand.nextDouble() < 1) {
return getPerfectSquare();
// } else {
// return getRandomNumber();
// }
}
protected String getRandomOperator() {
String[] ops = {"+", "-", "*", "/"};
return ops[rand.nextInt(ops.length)];
}
protected int getPriority(String op) {
if (op == null) return 3;
switch (op) {
case "+":
case "-":
return 1;
case "*":
case "/":
return 2;
case "²":
case "√":
case "sin":
case "cos":
case "tan":
return 3;
default:
return 0;
}
}
// 解析数字字符串为double
protected double parseNumber(String numStr) {
return Double.parseDouble(numStr);
}
// 格式化结果为字符串,如果是整数显示整数,小数显示小数
protected String formatResult(double value) {
if (value == (int) value) {
return String.valueOf((int) value);
} else {
// 保留2位小数但去除末尾的0
String formatted = String.format("%.2f", value);
if (formatted.endsWith(".00")) {
return formatted.substring(0, formatted.length() - 3);
} else if (formatted.endsWith("0")) {
return formatted.substring(0, formatted.length() - 1);
}
return formatted;
}
}
public abstract String addParenthesesIfNeeded(Expression child, String parentOp, boolean isRightChild);
}
Loading…
Cancel
Save