123456789 给一个字符串随机添加 “-”,“+” 和为100
面试题 123456789 给一个字符串随机添加 “-”,“+” 生成一个公式计算和为100;
import java.util.Random; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author Mxhlin * @Email fuhua277@163.com * @Date 2022/09/16/16:34 * @Version * @Description * 123456789 * 这里一组数里面插入“+”,“-”最终的和为100 */ public class Reg11 { public static void main(String[] args) { String[] arr = { "","-","+"};// 设置一组数据 Random ra = new Random();// 实例化随机数 int a = 0;// 计数输出几次 while (true){ StringBuilder sb = new StringBuilder(); for (int i = 1; i < 9; i++) { // 遍历1~9添加在sb里,在每个数字前面添加arr[]里的数据 来组成一个公式 sb.append(i+"".concat(arr[ra.nextInt(arr.length)])); } sb.append("9");// 最后添加一个字符 ”9“; Pattern pa = Pattern.compile("-?\d+");// 正则表达式 -?\d+的意思是 -?:减号可以有也可以没 // \d : 0~9数字 + : {,1} // 这里的讲的不是很清楚,不懂的大家可以去专门搜一下这个表达式 Matcher matcher = pa.matcher(sb); int sum = 0; while (matcher.find()){ // sb 有数据的话 返回true sum += Integer.parseInt(matcher.group());// 把字符串内容转换为Integer 再相加 } if (sum == 100){ // 判断等于100 输出 System.out.printf("%s = 100%n",sb); a++; } if (a == 10 ){ // 输出十次 break; } } } }
运行结果