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