package com.hsh; public class Jiecheng100 { /** * @param args */ public static void main(String[] args) { int[] resultArray=new int[32];//存放计算结果的数组 int tempResult=1;//存储计算结果数组中各个索引下的数字计算后的数据 resultArray[0]=1;//默认计算结果数组第一个值为1 int firstTemp=0;//存放tempResult中超过5位的数字 int indexnum=0;//存放一共用了几个数组索引 int num=100;//需要计算阶乘的数字 for(int i=1;i<=num;i++){ for(int j=0;j<=indexnum;j++){ tempResult = resultArray[j]*i; if(firstTemp>0){ tempResult=tempResult+firstTemp; firstTemp=0; } /** * 将临时值转换成字符串 * 判断如果长度小于5,则临时值赋值给数组对应的索引, * 如果大于5,则临时值的后五位赋值给数组对应的索引,临时值五位以上的数字存放到firstTemp */ String tempResultStr=Integer.toString(tempResult); if(tempResultStr.length()>5){ resultArray[j]=Integer.parseInt(tempResultStr.substring(tempResultStr.length()-5, tempResultStr.length())); firstTemp=Integer.parseInt(tempResultStr.substring(0,tempResultStr.length()-5)); }else{ resultArray[j]=tempResult; } //如果firstTemp大于0并且已经是最后一个用到的索引时,需要加一个新的索引来存放firstTemp if(firstTemp>0 && j==indexnum){ indexnum++; } } } //把存放数值的数组进行整理组成结果字符串 StringBuffer result2=new StringBuffer(); for(int j=indexnum;j>=0;j--){ String temp1 = resultArray[j]+""; //如果该索引是最后一个索引,也就是结果字符串的第一位时,直接放到字符串的首位即可 //如果该索引不是最后一个索引,且该值的数字长度小于5位时,需要在前面补0,构成5位的字符串 if(temp1.length()<5 && j<indexnum){ for(int h=temp1.length();h<5;h++){ result2.append("0"); } } result2.append(resultArray[j]); } System.out.println("result="+result2.toString()); } }