我们要知道,程序有时候需要处理大整数,那我们该怎么办呢?我们可以使用java.math包中的BigInteger类提供任意精度的整数运算,通过使用构造方法public BigInteger(String val)构造一个十进制的BigInteger对象。
该构造方法可以发生NumberFormatException异常,也就是说,字符串参数val中如果含有非数字字符就会发生NumberFormatException异常。
BigInteger类的常用方法如下:
返回当前大整数对象与参数指定的大整数对象的和。
返回当前大整数对象与参数指定的大整数对象的差。
返回当前大整数对象与参数指定的大整数对象的积。
返回当前大整数对象与参数指定的大整数对象的商。
返回当前大整数对象与参数指定的大整数对象的余。
返回当前大整数对象与参数指定的大整数的比较结果,返回值是1、-1或0,分别表示当前大整数对象大于、小于或等于参数指定的大整数。
返回当前大整数对象的绝对值。
返回当前大整数对象的a次幂。
返回当前大整数对象十进制的字符串表示。
返回当前大整数对象p进制的字符串表示。
下面看一个运用大整数类的使用方法,我们以大数加法这道题为例,要求计算a+b的和,但这道题目明确说明两个数字a,b数字不超过1000位,可想而知,一般的整形一定放不下,1000位的数字加法是多少亿..亿了,而常规的做法就是以数组存储数字,模拟加法进位等操作,操作起来比较麻烦。而如果运用java的大整数类,代码非常简单,如下:
importjava.math.BigInteger;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);BigIntegera=sc.nextBigInteger();BigIntegerb=sc.nextBigInteger();System.out.println(a.add(b));}}
大家可以自行上机试验并完成,
可以对比其他语言,如C、C++,解决问题的速度实在太快了