From 85601e2446b38fdc6db071ead06117530c0796b3 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 17 Sep 2020 11:26:14 +0800 Subject: [PATCH] fix code --- .../captcha/generator/MathGenerator.java | 17 +++----------- .../java/cn/hutool/captcha/GeneratorTest.java | 14 ++++++++++++ .../java/cn/hutool/core/math/Calculator.java | 22 +++++++------------ .../cn/hutool/core/math/CalculatorTest.java | 6 +++++ .../http/cookie/GlobalCookieManager.java | 2 +- 5 files changed, 32 insertions(+), 29 deletions(-) create mode 100644 hutool-captcha/src/test/java/cn/hutool/captcha/GeneratorTest.java 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 11820e6fd..1482c9f60 100644 --- a/hutool-captcha/src/main/java/cn/hutool/captcha/generator/MathGenerator.java +++ b/hutool-captcha/src/main/java/cn/hutool/captcha/generator/MathGenerator.java @@ -1,5 +1,6 @@ package cn.hutool.captcha.generator; +import cn.hutool.core.math.Calculator; import cn.hutool.core.util.CharUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; @@ -59,20 +60,8 @@ public class MathGenerator implements CodeGenerator { return false; } - final int a = Integer.parseInt(StrUtil.sub(code, 0, this.numberLength).trim()); - final char operator = code.charAt(this.numberLength); - final int b = Integer.parseInt(StrUtil.sub(code, this.numberLength + 1, this.numberLength + 1 + this.numberLength).trim()); - - switch (operator) { - case '+': - return (a + b) == result; - case '-': - return (a - b) == result; - case '*': - return (a * b) == result; - default: - return false; - } + final int calculateResult = (int) Calculator.conversion(code); + return result == calculateResult; } /** diff --git a/hutool-captcha/src/test/java/cn/hutool/captcha/GeneratorTest.java b/hutool-captcha/src/test/java/cn/hutool/captcha/GeneratorTest.java new file mode 100644 index 000000000..383ae48f1 --- /dev/null +++ b/hutool-captcha/src/test/java/cn/hutool/captcha/GeneratorTest.java @@ -0,0 +1,14 @@ +package cn.hutool.captcha; + +import cn.hutool.captcha.generator.MathGenerator; +import org.junit.Test; + +public class GeneratorTest { + @Test + public void mathGeneratorTest(){ + final MathGenerator mathGenerator = new MathGenerator(); + for (int i = 0; i < 1000; i++) { + mathGenerator.verify(mathGenerator.generate(), "0"); + } + } +} 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 72670148b..0fb845ea7 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,6 +1,7 @@ package cn.hutool.core.math; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import java.math.BigDecimal; import java.util.Collections; @@ -25,28 +26,21 @@ public class Calculator { * @return 计算结果 */ public static double conversion(String expression) { - double result; - Calculator cal = new Calculator(); - try { - expression = transform(expression); - result = cal.calculate(expression); - } catch (Exception e) { - // e.printStackTrace(); - // 运算错误返回NaN - return Double.NaN; - } - // return new String().valueOf(result); - return result; + final Calculator cal = new Calculator(); + expression = transform(expression); + return cal.calculate(expression); } /** * 将表达式中负数的符号更改 * * @param expression 例如-2+-1*(-3E-2)-(-1) 被转为 ~2+~1*(~3E~2)-(~1) - * @return 更改后的表达式 + * @return 转换后的字符串 */ private static String transform(String expression) { - char[] arr = expression.toCharArray(); + expression = StrUtil.cleanBlank(expression); + expression = StrUtil.removeSuffix(expression, "="); + final char[] arr = expression.toCharArray(); for (int i = 0; i < arr.length; i++) { if (arr[i] == '-') { if (i == 0) { 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 107d34458..553c1691e 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 @@ -10,4 +10,10 @@ public class CalculatorTest { final double conversion = Calculator.conversion("(0*1--3)-5/-4-(3*(-2.13))"); Assert.assertEquals(10.64, conversion, 2); } + + @Test + public void conversationTest2(){ + final double conversion = Calculator.conversion("77 * 12"); + Assert.assertEquals(924.0, conversion, 2); + } } diff --git a/hutool-http/src/main/java/cn/hutool/http/cookie/GlobalCookieManager.java b/hutool-http/src/main/java/cn/hutool/http/cookie/GlobalCookieManager.java index 541e53027..79d63d6a9 100644 --- a/hutool-http/src/main/java/cn/hutool/http/cookie/GlobalCookieManager.java +++ b/hutool-http/src/main/java/cn/hutool/http/cookie/GlobalCookieManager.java @@ -69,7 +69,7 @@ public class GlobalCookieManager { Map> cookieHeader; try { - cookieHeader = cookieManager.get(getURI(conn), new HashMap>(0)); + cookieHeader = cookieManager.get(getURI(conn), new HashMap<>(0)); } catch (IOException e) { throw new IORuntimeException(e); }