我们要知道,程序有时候需要处理大整数,那我们该怎么办呢?我们可以使用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++,解决问题的速度实在太快了

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)