日期:2014-05-20  浏览次数:20800 次

BigInteger求50!的困惑
我找书上敲了段求50!的代码
Java code

package ex14;
import java.math.*;

public class LargeFactorial {
    public static void main(String[] args) {
        // TODO 自动生成方法存根
        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+""));//这里的i+""不是很理解
        
        return result;
    }

}


我想了想把它改成
Java code

package ex14;
import java.math.*;

public class LargeFactorial {
    public static void main(String[] args) {
        // TODO 自动生成方法存根
        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;
    }

}


就无法运行了,我想不明白为什么要写成i+""而不是"i"

------解决方案--------------------
BigInteger没有参数为int的构造方法,有string的
i+""是i弄成string的形式
也可以用String.valueOf(i)
------解决方案--------------------
如果i = 2
i+"" = "2" //字符串2
"i" = ”i“ //字符串i