转载:http://bbs.itheima.com/thread-109057-1-1.html
BigDecimal和BigInteger两个类看看
具体参考的是原帖7楼的代码
import java.math.BigInteger;
import java.util.regex.*;
import java.util.*;
class Test2{
public static void main(String ars[]){
Test2 test2 = new Test2();
test2.jieCheng(1000);
}
public void jieCheng(int number){
BigInteger res = new BigInteger("1");
for (int i = 1; i <= number; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
res = res.multiply(num); //相当于res * = num;,但是不是基本数据类型,不能使用*运算符
}
String str = res.toString();
int allZero = allZeroCount(str);
int lastZro =lastZeroCount(str);
System.out.println(number+"的阶乘为:"+"\n"+str);
System.out.println(number+"的阶乘中所有的0的个数:"+allZero);
System.out.println(number+"的阶乘中末尾的0的个数:"+lastZro);
}
//求阶乘结果末尾的0的个数
public int lastZeroCount(String str){
int count = 0;
char regex = '0';
int length = str.length();
int index = length-1;
while(str.charAt(index)==regex){
count++;
index--;
}
return count;
}
//求阶乘结果所有的0的个数
public int allZeroCount(String str){
int count = 0;
String regex = "0";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while (m.find())
{
count++;
}
return count;
}
}