我们要知道,程序有时候需要处理大整数,那我们该怎么办呢?我们可以使用java.math包中的BigInteger类提供任意精度的整数运算,通过使用构造方法public BigInteger(String val)构造一个十进制的BigInteger对象。
该构造方法可以发生NumberFormatException异常,也就是说,字符串参数val中如果含有非数字字符就会发生NumberFormatException异常。
BigInteger类的常用方法如下:
1)public BigInteger add(BigInteger val)
返回当前大整数对象与参数指定的大整数对象的和。
2)public BigInteger subtract(BigInteger val)
返回当前大整数对象与参数指定的大整数对象的差。
3)public BigInteger multiply(BigInteger val)
返回当前大整数对象与参数指定的大整数对象的积。
4)public BigInteger divide(BigInteger val)
返回当前大整数对象与参数指定的大整数对象的商。
5)public BigInteger remainder(BigInteger val)
返回当前大整数对象与参数指定的大整数对象的余。
6)public int compareTo(BigInteger val)
返回当前大整数对象与参数指定的大整数的比较结果,返回值是1、-1或0,分别表示当前大整数对象大于、小于或等于参数指定的大整数。
7)public BigInteger abs()
返回当前大整数对象的绝对值。
8)public BigInteger pow(int a)
返回当前大整数对象的a次幂。
9)public String toString()
返回当前大整数对象十进制的字符串表示。
10)public String toString(int p)
返回当前大整数对象p进制的字符串表示。
下面看一个运用大整数类的使用方法,我们以大数加法这道题为例,要求计算a+b的和,但这道题目明确说明两个数字a,b数字不超过1000位,可想而知,一般的整形一定放不下,1000位的数字加法是多少亿..亿了,而常规的做法就是以数组存储数字,模拟加法进位等操作,操作起来比较麻烦。而如果运用java的大整数类,代码非常简单,如下:
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); BigInteger a=sc.nextBigInteger(); BigInteger b=sc.nextBigInteger(); System.out.println(a.add(b)); } }
大家可以自行上机试验并完成,
可以对比其他语言,如C、C++,解决问题的速度实在太快了
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程