当前位置: 代码迷 >> J2SE >> BigInteger求50!的困惑解决方法
  详细解决方案

BigInteger求50!的困惑解决方法

热度:55   发布时间:2016-04-24 01:59:03.0
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
  相关解决方案