New file |
| | |
| | | package com.dy.pipIrrApp.util; |
| | | |
| | | import java.security.SecureRandom; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.Random; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-09-11 15:48 |
| | | * @LastEditTime 2024-09-11 15:48 |
| | | * @Description |
| | | */ |
| | | |
| | | public class CaptchaUtil { |
| | | /** |
| | | * 生成数学文本算式,例如1+1=? |
| | | * @param a 数字 |
| | | * @param b 数字 |
| | | * @return 字符 |
| | | */ |
| | | public static Map<String, String> mathTextCreator(int a, int b) { |
| | | Random random = new SecureRandom(); |
| | | // 生成随机操作,操作范围:[0,4),分别表示: + - * / |
| | | int op = random.nextInt(4); |
| | | // 定义计算的结果 |
| | | Integer result = 0; |
| | | // 定义构建的算式字符串 |
| | | StringBuilder resultString = new StringBuilder(); |
| | | // 运算符:- |
| | | if (1 == op) { |
| | | if (a >= b) { |
| | | result = a - b; |
| | | resultString.append(a).append("-").append(b).append("=?@").append(result); |
| | | } else { |
| | | result = b - a; |
| | | resultString.append(b).append("-").append(a).append("=?@").append(result); |
| | | } |
| | | } |
| | | // 运算符:* |
| | | else if (2 == op) { |
| | | result = a * b; |
| | | resultString.append(a).append("*").append(b).append("=?@").append(result); |
| | | } |
| | | // 运算符:/ |
| | | else if (3 == op) { |
| | | if (a != 0 && b % a == 0) { |
| | | result = b / a; |
| | | resultString.append(b).append("/").append(a).append("=?@").append(result); |
| | | } else if (b != 0 && a % b == 0) { |
| | | result = a / b; |
| | | resultString.append(a).append("/").append(b).append("=?@").append(result); |
| | | } else { |
| | | return mathTextCreator(a, b); |
| | | } |
| | | } |
| | | // 运算符:+ |
| | | else { |
| | | result = b + a; |
| | | resultString.append(a).append("+").append(b).append("=?@").append(result); |
| | | } |
| | | Map<String, String> ret = new HashMap<String, String>(); |
| | | ret.put("resultCode", result.toString()); |
| | | ret.put("resultString", resultString.toString()); |
| | | return ret; |
| | | } |
| | | } |