A+B和C之BigInteger(JAVA)

题目

给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。

题目分析

当出现了2的31次方时,这就不是一个简单的求和比较问题了,这道题主要考察的是对整数溢出的逻辑问题。当然忽略掉其中的逻辑问题,我首先想到的是BigInteger,相信用过java的都对这个类不太陌生,这是一个可以承载高范围的整数类,目前最大的范围还是未知。网络上的一般说法就是足够大了。
在类中需要用到两个类方法,一个是相加,不能用简单的+,而需要类函数add(), 而比较也要用类函数compareTo(). 代码如下:
        Scanner scanner = new Scanner(System.in);
        int n= scanner.nextInt();
        for(int i =0; i < n;i++){
            BigInteger a = BigInteger.valueOf(scanner.nextInt());
            BigInteger b = BigInteger.valueOf(scanner.nextInt());
            BigInteger c = BigInteger.valueOf(scanner.nextInt());
            int result = a.add(b).compareTo(c);
            switch (result){
                case 1:
                    System.out.println("Case #"+ (i+1) +": true");
                    break;
                default:
                    System.out.println("Case #"+ (i+1) +": false");
            }
        }

*在放在编译器里运行的时候会西安市runtime error,目前我还没找到原因所在,但是在本地的IDE里运行是完全没有问题的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值