diff --git a/src/ExpressionBuilder.java b/src/ExpressionBuilder.java new file mode 100644 index 0000000..c9b92e6 --- /dev/null +++ b/src/ExpressionBuilder.java @@ -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 getNumberPositions(String expression) { + String[] tokens = expression.split(" "); + List 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; } + } +}