2013-10-05 141 views
0

我已經做了以下程序來計算在Java中使用BigInteger的n個整數的階乘,但總是給出1作爲結果。錯誤在哪裏?因子程序沒有給出正確的輸出

import java.math.BigInteger; 
import java.io.*; 

class Factorial 
{ 
    public static void main(String args[]) 
    { 
     try 
     { 
      int key; 
      BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
      BigInteger result=new BigInteger("1"); 
      //take the quantity of elements for which factorial is to be calculated 
      int num=Integer.parseInt(br.readLine()); 

      while(num-->0) 
      { 
       //input the number for which factorial is to be calculated 
       key=Integer.parseInt(br.readLine()); 
       while(key>0) 
       { 
        System.out.println(key+""+result); 
        result.multiply(BigInteger.valueOf(key)); 
        key--; 
       } 
       //again make the result back to 1 for next key element 
       result=new BigInteger("1"); 
      } 
     }catch(Exception e) 
     { 
      //do nothing 
     } 
    } 
} 

回答

2

BigInteger是不可變的。的[BigIteger].mutlipy([BigInteger])結果需要被重新分配以獲得所需的輸出,如:

result = result.multiply(BigInteger.valueOf(key)); 

結果應在while循環執行操作之後被打印。看看這個修改後的代碼:

key=Integer.parseInt(br.readLine()); 
    while(key>0){ 
     result = result.multiply(BigInteger.valueOf(key)); 
     key--; 
    } 
    System.out.println(key+" "+result); 
+0

感謝它的工作。我實際上忘了分配結果,因爲你提到。 –

+0

好!別客氣。 – Masudul