我的教科书中有以下代码,用于计算阶乘:
import java.math.*;
public class LargeFactorial {
public static void main(String[] args) {
System.out.println("50! is \n" + factorial(50));
} public static BigInteger factorial(long n) {
BigInteger result = BigInteger.ONE;
for (int i = 1; i <= n; i++)
result = result.multiply(new BigInteger(i +""));
return result;
}
但是,我真的不明白new BigInteger(i +"")
。为什么他们将+""
放在构造函数中?我的意思是我们不会将空字符串乘以它也没有任何意义。请解释一下。
答案 0 :(得分:8)
它只是调用BigInteger(String)
构造函数,因为没有构造函数使用int
。使用字符串连接是将int
转换为String
的一种令人讨厌的方式,但它会起作用。
更清洁的方法IMO将使用BigInteger.valueOf(long)
:
result = result.multiply(BigInteger.valueOf(i));
(鉴于这两个问题,我对你的教科书质量略有警惕......)