题目:编程计算 S=4!+8!+12!+16!
public class Three {
public static void main(String[] args) {

           int s=0,q=1,i,j;
           for(i=4;i<=16;i=i+4){
            for(j=1;j<=i;j++){
            q=j*q;
         }
            s=s+q;
           }
           System.out.println("s="+s);
}}
我写的代码 打印出来是竟然是负数 s=-1191263208

解决方案 »

  1.   

    只改一处,就是把int改为long,你可以打印一下看看问题,超出了int的精度。
      

  2.   

    /**S=4!+8!+12!+16!*/
    public static void main(String args[]) {
    long s=0, q=1, i, j; 
            for(i=4; i<=16;i+=4){ 
             for(j=1; j<=i; j++){ 
             q=j*q; 
             System.out.println("q=" + q);
             } 
             System.out.println("===========");
             s=s+q; 
            } 
            System.out.println("s="+s); 
    }