2017-03-25 6 views
1

私がしようとしているのは、 番号0-30の階乗を印刷することです。これを実行すると、無限にFactorial = 0が出力されます。誰かがこれを修正する方法を教えてもらえますか?Java print factorials 1-30

public static void factor(){ 

    int n=0; 
    int factorial = 1; 
    while (n<=0&n<=30) 
    { 
     n=n++; 
     factorial = factorial * n; 
     n--; 
     System.out.println("Factorial = " + factorial); 
    } 


} 


public static void main(String[] args) { 
    factor(); 
} 
+1

「n - 」を削除するなど、よりスマートなものを使用する必要があります。また、 'x * 0 = 0' –

答えて

1

あなたは、ループ内nをデクリメントしているので、それはそれは常に01の間で反転します。さらに、intは数字を大きく保持することはできず、どちらも数字を保持することはできません。longBigInteger

int n = 0; 
BigInteger factorial = BigInteger.ONE; 
while (n <= 30) { 
    System.out.printf("Factorial(%d) = %s%n", n, factorial); 
    n++; 
    factorial = factorial.multiply(BigInteger.valueOf(n)); 
} 
関連する問題