parent
fee2ec55d5
commit
345f15cf6a
@ -0,0 +1,51 @@
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class ExpressionBuilder {
|
||||
private static final Random RANDOM = new Random();
|
||||
private static final String[] OPERATORS = {"+", "-", "*", "/"};
|
||||
|
||||
// 生成基础四则运算表达式
|
||||
public String generateBasicExpression(int count) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < count; i++) {
|
||||
sb.append(RANDOM.nextInt(100) + 1);
|
||||
if (i < count - 1) {
|
||||
sb.append(" ").append(OPERATORS[RANDOM.nextInt(OPERATORS.length)]).append(" ");
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
// 获取表达式中数字的位置
|
||||
public List<Integer> getNumberPositions(String expression) {
|
||||
String[] tokens = expression.split(" ");
|
||||
List<Integer> positions = new ArrayList<>();
|
||||
for (int i = 0; i < tokens.length; i++) {
|
||||
if (isNumber(tokens[i])) positions.add(i);
|
||||
}
|
||||
return positions;
|
||||
}
|
||||
|
||||
// 检查是否存在除零
|
||||
public boolean hasDivideByZero(String expression) {
|
||||
String[] tokens = expression.split(" ");
|
||||
for (int i = 0; i < tokens.length - 1; i++) {
|
||||
if (tokens[i].equals("/")) {
|
||||
try {
|
||||
if (Integer.parseInt(tokens[i + 1]) == 0) return true;
|
||||
} catch (NumberFormatException e) {
|
||||
//
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//判断是否为数字位
|
||||
private boolean isNumber(String token) {
|
||||
try { Integer.parseInt(token); return true; }
|
||||
catch (NumberFormatException e) { return false; }
|
||||
}
|
||||
}
|
Loading…
Reference in new issue