From 62d31e4656eff1da464491d9c1a1b91c220690db Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 15 Nov 2024 11:29:51 +0800 Subject: [PATCH] =?UTF-8?q?Calculator=E5=85=BC=E5=AE=B9`x`=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=BD=9C=E4=B8=BA=E4=B9=98=E5=8F=B7=EF=BC=88issue#378?= =?UTF-8?q?7@Github=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- .../main/java/cn/hutool/core/math/Calculator.java | 4 ++++ .../java/cn/hutool/core/math/CalculatorTest.java | 13 ++++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24c448952..874ba170d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,12 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.34(2024-11-13) +# 5.8.34(2024-11-15) ### 🐣新特性 * 【http 】 增加Windows微信浏览器识别(issue#IB3SJF@Gitee) * 【core 】 ZipUtil.unzip增加编码容错(issue#I3UZ28@Gitee) +* 【core 】 Calculator兼容`x`字符作为乘号(issue#3787@Github) ### 🐞Bug修复 * 【core 】 修复DateUtil.rangeToList中step小于等于0时无限循环问题(issue#3783@Github) diff --git a/hutool-core/src/main/java/cn/hutool/core/math/Calculator.java b/hutool-core/src/main/java/cn/hutool/core/math/Calculator.java index dbda0cfc5..ecaf93515 100644 --- a/hutool-core/src/main/java/cn/hutool/core/math/Calculator.java +++ b/hutool-core/src/main/java/cn/hutool/core/math/Calculator.java @@ -1,5 +1,6 @@ package cn.hutool.core.math; +import cn.hutool.core.util.CharUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; @@ -192,6 +193,9 @@ public class Calculator { arr[i] = '~'; } } + } else if(CharUtil.equals(arr[i], 'x', true)){ + // issue#3787 x转换为* + arr[i] = '*'; } } if (arr[0] == '~' && (arr.length > 1 && arr[1] == '(')) { diff --git a/hutool-core/src/test/java/cn/hutool/core/math/CalculatorTest.java b/hutool-core/src/test/java/cn/hutool/core/math/CalculatorTest.java index f1e1a8387..0e561e301 100644 --- a/hutool-core/src/test/java/cn/hutool/core/math/CalculatorTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/math/CalculatorTest.java @@ -1,8 +1,9 @@ package cn.hutool.core.math; -import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + public class CalculatorTest { @Test @@ -55,4 +56,14 @@ public class CalculatorTest { final double calcValue = Calculator.conversion("(11+2)12"); assertEquals(156D, calcValue, 0.001); } + + @Test + void issue3787Test() { + final Calculator calculator1 = new Calculator(); + double result = calculator1.calculate("0+50/100x(1/0.5)"); + assertEquals(1D, result); + + result = calculator1.calculate("0+50/100X(1/0.5)"); + assertEquals(1D, result); + } }