From d5bb6b2adbf085e1d5157bcc0c88c452e215cebf Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 2 Jul 2025 09:39:10 +0800 Subject: [PATCH] =?UTF-8?q?`MathGenerator`=E5=9B=9B=E5=88=99=E8=BF=90?= =?UTF-8?q?=E7=AE=97=E6=96=B9=E5=BC=8F=E6=94=AF=E6=8C=81=E4=B8=8D=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=B4=9F=E6=95=B0=E7=BB=93=E6=9E=9C=EF=BC=88pr#1363@G?= =?UTF-8?q?itee=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- .../captcha/generator/MathGenerator.java | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b35b27907..2a0234283 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,10 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.40(2025-06-25) +# 5.8.40(2025-07-02) ### 🐣新特性 +* 【captcha】 `MathGenerator`四则运算方式支持不生成负数结果(pr#1363@Gitee) ### 🐞Bug修复 ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-captcha/src/main/java/cn/hutool/captcha/generator/MathGenerator.java b/hutool-captcha/src/main/java/cn/hutool/captcha/generator/MathGenerator.java index 69347d9fd..af49557e0 100755 --- a/hutool-captcha/src/main/java/cn/hutool/captcha/generator/MathGenerator.java +++ b/hutool-captcha/src/main/java/cn/hutool/captcha/generator/MathGenerator.java @@ -16,10 +16,14 @@ public class MathGenerator implements CodeGenerator { private static final String operators = "+-*"; - /** 参与计算数字最大长度 */ + /** + * 参与计算数字最大长度 + */ private final int numberLength; - /** 计算结果是否允许负数 */ + /** + * 计算结果是否允许负数 + */ private final boolean resultHasNegativeNumber; /** @@ -38,6 +42,15 @@ public class MathGenerator implements CodeGenerator { this(2, resultHasNegativeNumber); } + /** + * 构造 + * + * @param numberLength 参与计算最大数字位数 + */ + public MathGenerator(int numberLength) { + this(numberLength, true); + } + /** * 构造 * @@ -57,7 +70,7 @@ public class MathGenerator implements CodeGenerator { int numberInt2 = 0; numberInt1 = RandomUtil.randomInt(limit); // 如果禁止了结果有负数,且计算方式正好计算为减法,需要第二个数小于第一个数 - if (!resultHasNegativeNumber && CharUtil.equals('-',operator,false)) { + if (!resultHasNegativeNumber && CharUtil.equals('-', operator, false)) { //如果第一个数为0,第二个数必须为0,随机[0,0)的数字会报错 numberInt2 = numberInt1 == 0 ? 0 : RandomUtil.randomInt(0, numberInt1); } else {