importjava.util.Random;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassZ{publicstaticvoidmain(String[] args){int n =0;//用来统计出现的次数int m =0;//统计得到每个结果用的次数int mm =0;//统计计算的总次数//输出11个和为100的算式do{++m;//每进入循环一次 m加1String s =formula();//值为100的算式if(isOk(s)){System.out.printf("%s=100(算了%d次)%n", s,m);//打印出来
n = n +1;//每打印一次加一,用来判次数
mm = mm + m;
m=0;//重置单个结果统计计数器}}while(n !=11);System.out.println("总公计算了"+mm+"次");}//得到一个算式publicstaticStringformula(){Random rand =newRandom();String[] cal ={"","+","-"};StringBuilder s =newStringBuilder();//定义一个可变字符串sfor(int i =1; i <9; i++){//1-8
s.append(String.format("%d%s", i, cal[rand.nextInt(cal.length)]));//s添加数字和随机字符(  、+、-)//数字+符号,i + 随机输出空白或符号}
s.append(9);//在s后加一个数字9return s.toString();//返回s转换为String格式}publicstaticbooleanisOk(String s){Pattern p =Pattern.compile("-?\\d+");Matcher m = p.matcher(s);//匹配格式为p的格式int sum =0;while(m.find()){//当格式匹配时进入循环String t = m.group();//把字符串m给t group组
sum +=Integer.parseInt(t);//把t装箱(Interger)加到整数sum上}return sum ==100;}}