package test;
public class MyTest3 {
public static void main(String[] args) {
String str="2!+4!";
int mysum=jiecheng(str);
System.out.println("---"+mysum);
}
//第一种提取数字
/*public static String getnum (String str){
String num="";
char chastr[]=str.toCharArray();
for (int i = 0; i < chastr.length; i++) {
if(Integer.valueOf(chastr[i])>=48&&Integer.valueOf(chastr[i])<=57){
System.out.println("==="+chastr[i]);
num=num+chastr[i];
}
}
return num;
}*/
//第二种提取数字
public static String getnum (String str){
String num="";
char chastr[]=str.toCharArray();
int i=0;
while(i<chastr.length){
num=num+chastr[i];
i=i+3;
}
return num;
}
public static int jiecheng(String str){
int sumzh = 0;
String numstr=getnum(str);
Integer[]num=new Integer[numstr.length()];
for (int i = 0; i < numstr.length(); i++) {
int gd=numstr.charAt(i)-'0';
num[i]=gd;
}
//假如num={2,4,3};
for (int i = 0; i < num.length; i++) {
int mynum=num[i];
int a=1;//因为阶乘的话最后都会乘以1
int mysum=0;//过度变量
int sum = 1;//初始化数字一个数字的阶乘为1
//for循环的第一次 ,这里mynum为2
//初入while循环 ,mynum=2,mysum=2,mynum自动减一,sum为2,
//第二次进入while循环,mynum自动减一后为一,mysum=1,mynum自动减一,sum为2
//第三次因为mynum为0,不进入while循环
//所以最终输出在while循环外的是第二次循环的sum值,sum为2,也就是2的阶乘为2.
while(mynum>0){
mysum=mynum*a;
mynum--;
sum*=mysum;//等同于 sum=sum*mysum
}
sumzh+=sum;
}
return sumzh;
}
}