JAVA使用字符串求大整数相加的结果

import java.util.Scanner;

//大数相加:
//用两个字符串,n1, n2 表示我们要加的大数
//思路:先将两字符串位数补对齐,然后反转两个字符串
//按位相加
//再反转
public class BigNumber {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
       // String num1 = sc.next();
       // String num2 = sc.next();
        sc.close();
        //测试
        String res = bigIntAdd("123456789987654321","987654321123456789");// == 111111111111111110
        System.out.println(res);

    }

    public static String bigIntAdd(String num1, String num2){
        String n1 = new StringBuffer(num1).reverse().toString();
        String n2 = new StringBuffer(num2).reverse().toString();
        int len1 = n1.length();
        int len2 = n2.length();
        
        int maxLen = Math.max(len1, len2);

        while (len1 < maxLen){
            n1 += "0";
            len1++;
        }

        while (len2 < maxLen){
            n2 += "0";
            len2++;
        }

        StringBuffer res = new StringBuffer();
        int c = 0;
        //开始相加
        for(int i = 0; i < maxLen; i++){
            int ans = Integer.parseInt(n1.charAt(i)+"") + Integer.parseInt(n2.charAt(i)+"") + c;
            int ap = ans % 10;
            res.append(ap);
            c = ans / 10;
        }

        //注意,如果最后带有进位
        if(c != 0){
            res.append(c);
        }

        //得到结果
        return res.reverse().toString();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值