java 用integer类求32的阶乘
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 用integer类求32的阶乘相关的知识,希望对你有一定的参考价值。
不可能用Integer类计算,因为32的阶乘远远大于Integer类的最大值。
可以用JAVA提供的BigInteger类来计算。
结果是:263130836933693530167218012160000000
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的阶乘的主要内容,如果未能解决你的问题,请参考以下文章