From 345f15cf6a6aae63f1d494335b5d9f350530c183 Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sun, 28 Sep 2025 00:56:57 +0800 Subject: [PATCH] ADD file via upload --- src/ExpressionBuilder.java | 51 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/ExpressionBuilder.java 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; } + } +}