日期:2014-05-20  浏览次数:20827 次

@这个程序是100的阶乘,结果怎么是负的 是不是溢出了呀

public   class   jiecheng
{
public   static   void   main(String   args[])
{
int   i,j=1;
int   t=0;
for   (i=1;i <=100;i++)
      {
        j=j*i;
        t=t+j;
      }
System.out.println( "t= "+t);
}
}


本人基础很差;希望大家能给点详细的说明


------解决方案--------------------
这个不是阶乘,这是阶乘的和!
问题是溢出了。
------解决方案--------------------
public class jiecheng
{
public static void main(String args[])
{
int i,j=1;
for (i=1;i <=10;i++)
{
j=j*i;
}
System.out.println(j);
}
}
这个是阶乘,10没有溢出
------解决方案--------------------
BigInteger bi = new BigInteger( "1 ");

for (int i = 1; i <= 1000; i++) {
bi = bi.multiply(new BigInteger(i + " "));

}
System.out.println(num + "! = " + bi);
------解决方案--------------------
哎 看来这问题只有我这种无聊的人来说了 处理溢出是没办法 不过你可以换个角度考虑值还是可以输出的 就是没什么意义
public class test
{
public static void main(String args[])
{
int i;
double j=1.0;
int n = 0;
for (i=1;i <=100;i++)
{
j=j*i;
if(j> 10000){
n++;
j/=10000;
}

}
System.out.println(j+ "- "+n);
}
}//最终的结果就是j*10000的n次方