我找书上敲了段求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