java 用integer类求32的阶乘

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 用integer类求32的阶乘相关的知识,希望对你有一定的参考价值。

不可能用Integer类计算,因为32的阶乘远远大于Integer类的最大值。

可以用JAVA提供的BigInteger类来计算。

结果是:263130836933693530167218012160000000

import java.math.BigInteger;
public class Factorial
public static void main(String[] args)
for (int i = 1; i <= 32; i++)
System.out.printf("(%s)\\t%s\\n", i, factorial(i));


public static BigInteger factorial(int num)
if (num < 1)
throw new RuntimeException("num can\'t < 1");

if (num == 1)
return BigInteger.ONE;
else
BigInteger bigInteger = BigInteger.valueOf(num);
return bigInteger.multiply(factorial(num - 1));


追问

谢谢~

但是给的问题就是这个。。biginteger还没接触过


追答

我推敲了一下他的用词,他说的是整数类,没说是Integer类(integer,not Integer),我想他的意思是别用浮点数类(float,double),因为浮点数类精度不够。

参考技术A 不用BigInteger也可以实现。
代码我就不写了,说下思路:
用一个集合保存结果的每一位(int型,满足要求),从1开始,然后每次依次和结果的每一位相乘,注意好进位,最终就能得到一个结果每一位的集合,循环输出就可以了。

这样做的好处是,每次都是个位数相乘,不存在overloading的问题。

java问题 啥时候用int,啥时候用integer

谢谢

int 是基本数据类型。
Integer是对象类型。当要装入容器如 Vector ArrayList等的时候需要作为对象来装入,具体你可以看api,某些类的方法说明中参数是Object类型,你要传入的是整形的话就只能变成Integer来使用了。api中也有这个类的详细说明。

Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。

此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。
参考技术A int是基本数据类型,只保存了数据的值,没有任何的方法和属性,只能当做数字进行树立。
Integer是int的封装类,是一个引用的数据类型,包含方法和属性,不可以直接进行计算,需要通过方法来取得其中的值(使用方法intValue())。

jdk1.5之后这两个在使用上没有区别,因为Java自动完成了拆、封装的操作。

而在JDK1.4乃至更早的版本里,由于不能自动拆、封装,因此在使用上还是有区别的。
参考技术B 对于你的普通开发来说.自从Java5.0以后用那个都是一样的啦.
因为JVM会自动拆箱和装箱的.

但是你要清楚,int只是一个基本类型的.
而Integer是个类.也就是说他里面含有很多方法.如果用Integer类型的,你可以使用它里面提供的方法.而int就没有.平时开发建议使用int,比较轻便,节省资源
参考技术C int
是基本数据类型
integer是个泛型,它是一个封装类,里面封装的就是int这种基本数据类型。目地就是为了可以把这个创建它的对象。
通俗点说:int就是一个茅坑,但现在它是露天的,那试问谁敢再它的上面运行拉屎这种方法。而integer就是给在这个茅坑上起了个房子,把这个茅坑封装起来变成了厕所,这样你才能在里面拉屎。
参考技术D int是JAVA八在基本数据之一,JAVA是面向对象语言嘛,所以就为这些基本数据提供了包装类,Integer就是对应int类型数据的包装类。
也就是说Integer是一个有属性和方法的类,int只是一个基本数据类型,后者是没有属性和方法可以调用的。

以上是关于java 用integer类求32的阶乘的主要内容,如果未能解决你的问题,请参考以下文章

用Java编写程序,求n!

integer在数据类型中代表啥?

Integer.toBinaryString()的源代码解析

integer在数据类型中代表啥

java方法返回类型应该用int还是integer

java方法返回类型应该用int还是integer