面试题 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;
}
}
}
}
运行结果