求123456789 字符串1..9 之间不改数字位置随机+-要求表达结果和为100,写出这样表达式。
代码如下:
package cn;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Reg3 {
public static void main(String[] args) {
//求123456789 字符串1..9 之间不改数字位置随机+-要求表达结果和为100,写出这样表达式
int i = 0;
while (true){
++i;
String str = getStr();
if (getSum(str) == 100){
System.out.println(str + "=100");
//随机次数
System.out.println(i);
break;
}
}
}
public static int getSum(String str) {
int sum = 0;
Pattern p = Pattern.compile("-?\\d+");
Matcher m = p.matcher(str);
while (m.find()) {
sum += Integer.parseInt(m.group());
}
return sum;
}
public static String getStr() {
StringBuilder sbu = new StringBuilder();
Random rand = new Random();
String[] op = {"", "+", "-"};
for (int i = 1; i < 9; i++) {
sbu.append(String.format("%d%s",i,op[rand.nextInt(op.length)]));
}
sbu.append("9");
return sbu.toString();
}
}
运行结果: