n!

//求n!的程序(完成)
import java.io.*;
import java.lang.*;
class a4
{
  public static void main(String args[]) throws IOException{
     int c=0,b,i,j=1,n,k;
     int a[]=new int[159];
     String s;
     System.out.println("输入一个整数");
     BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
     n=Integer.parseInt(br.readLine());
     a[1]=1;
     for(i=2;i<=158;i++)
         a[i]=0;
     //将每次得到的数据按位保存在数组中,然后用i依次乘数组中的元素,并循环执行
     for(i=1;i<=n;i++)
       { for(j=1;j<=158;j++)
          {a[j]=a[j]*i+c;
           b=a[j]%10;
           c=a[j]/10;
           a[j]=b;
          }
        }
     //打印输出结果
    System.out.println("打印输出结果"); 
     System.out.print(n+"!=");
    for(i=158;i>=1;i--) 
       System.out.print(a[i]);
   }
}
此题在计算时得到的结果是对的
可是当输入2时结果对但是却输出一大串的零,我怎么才能把前面的零去掉呢

解决方案 »

  1.   

    import java.io.*;
    import java.lang.*;
    import java.math.* ;class a4
    {
      public static void main(String args[]) throws IOException{
         int c=0,b,i,j=1,n,k;
         int a[]=new int[159];
         String s;
         System.out.println("输入一个整数");
         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
         n=Integer.parseInt(br.readLine());
         a[1]=1;
         for(i=2;i<=158;i++)
             a[i]=0;
         //将每次得到的数据按位保存在数组中,然后用i依次乘数组中的元素,并循环执行
         for(i=1;i<=n;i++)
           { for(j=1;j<=158;j++)
              {a[j]=a[j]*i+c;
               b=a[j]%10;
               c=a[j]/10;
               a[j]=b;
              }
            }
         //打印输出结果
        System.out.println("打印输出结果"); 
         System.out.print(n+"!=");
         
        s = new String() ;
        for(i=158;i>=1;i--)
        {
         s = s + a[i] ;
        }
        
        BigInteger bi = new BigInteger( s ) ;
        System.out.print( bi.toString() ) ;
       }
    }这样写输出是正常的,但是太大的数字就会出问题,比如1000,试用BigInteger计算可以让程序简短的多,但是太大的数字计算实在是很慢。下面是试用BigInteger的例子
    import java.io.*;
    import java.lang.*;
    import java.math.* ;class a4
    {
      public static void main(String args[]) throws IOException
      {
     BigInteger bi = new BigInteger("1") ;
         String s;
         System.out.println("输入一个整数");
         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
         int n = Integer.parseInt(br.readLine());
         
         for (int i = 1; i<=n; i++)
         {
          bi = bi.multiply( new BigInteger( ""+i ) ) ;
         }
         
         System.out.println ( bi.toString() ) ;
       }
    }