mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix code
This commit is contained in:
parent
6b89c841d3
commit
85601e2446
@ -1,5 +1,6 @@
|
|||||||
package cn.hutool.captcha.generator;
|
package cn.hutool.captcha.generator;
|
||||||
|
|
||||||
|
import cn.hutool.core.math.Calculator;
|
||||||
import cn.hutool.core.util.CharUtil;
|
import cn.hutool.core.util.CharUtil;
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@ -59,20 +60,8 @@ public class MathGenerator implements CodeGenerator {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int a = Integer.parseInt(StrUtil.sub(code, 0, this.numberLength).trim());
|
final int calculateResult = (int) Calculator.conversion(code);
|
||||||
final char operator = code.charAt(this.numberLength);
|
return result == calculateResult;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package cn.hutool.core.math;
|
package cn.hutool.core.math;
|
||||||
|
|
||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -25,28 +26,21 @@ public class Calculator {
|
|||||||
* @return 计算结果
|
* @return 计算结果
|
||||||
*/
|
*/
|
||||||
public static double conversion(String expression) {
|
public static double conversion(String expression) {
|
||||||
double result;
|
final Calculator cal = new Calculator();
|
||||||
Calculator cal = new Calculator();
|
expression = transform(expression);
|
||||||
try {
|
return cal.calculate(expression);
|
||||||
expression = transform(expression);
|
|
||||||
result = cal.calculate(expression);
|
|
||||||
} catch (Exception e) {
|
|
||||||
// e.printStackTrace();
|
|
||||||
// 运算错误返回NaN
|
|
||||||
return Double.NaN;
|
|
||||||
}
|
|
||||||
// return new String().valueOf(result);
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将表达式中负数的符号更改
|
* 将表达式中负数的符号更改
|
||||||
*
|
*
|
||||||
* @param expression 例如-2+-1*(-3E-2)-(-1) 被转为 ~2+~1*(~3E~2)-(~1)
|
* @param expression 例如-2+-1*(-3E-2)-(-1) 被转为 ~2+~1*(~3E~2)-(~1)
|
||||||
* @return 更改后的表达式
|
* @return 转换后的字符串
|
||||||
*/
|
*/
|
||||||
private static String transform(String expression) {
|
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++) {
|
for (int i = 0; i < arr.length; i++) {
|
||||||
if (arr[i] == '-') {
|
if (arr[i] == '-') {
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
|
@ -10,4 +10,10 @@ public class CalculatorTest {
|
|||||||
final double conversion = Calculator.conversion("(0*1--3)-5/-4-(3*(-2.13))");
|
final double conversion = Calculator.conversion("(0*1--3)-5/-4-(3*(-2.13))");
|
||||||
Assert.assertEquals(10.64, conversion, 2);
|
Assert.assertEquals(10.64, conversion, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void conversationTest2(){
|
||||||
|
final double conversion = Calculator.conversion("77 * 12");
|
||||||
|
Assert.assertEquals(924.0, conversion, 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ public class GlobalCookieManager {
|
|||||||
|
|
||||||
Map<String, List<String>> cookieHeader;
|
Map<String, List<String>> cookieHeader;
|
||||||
try {
|
try {
|
||||||
cookieHeader = cookieManager.get(getURI(conn), new HashMap<String, List<String>>(0));
|
cookieHeader = cookieManager.get(getURI(conn), new HashMap<>(0));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new IORuntimeException(e);
|
throw new IORuntimeException(e);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user