| 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; | 
 |  |  |     } | 
 |  |  | } |