java:字符串实现大数相加

字符串实现大数相加

给定两个数字字符串,求出相加的和 思路:需要将两个字符串相对应的位进行相加,注意不能将整个字符串转化为数字,进行直接相加,这样会出现溢出的问题。

public String bigNumverAdd(String number1, String number2) {

        StringBuffer result = new StringBuffer();

        //字符串反转
        String n1 = new StringBuffer(number1).reverse().toString();
        String n2 = new StringBuffer(number2).reverse().toString();

        //获取长度
        int len1 = n1.length();
        int len2 = n2.length();
        int maxLength = len1 > len2 ? len1 : len2;

        //进位标志
        int flag = 0;
        //是否越界(最高位是否进1)
        boolean overFlow = false;

        //将两个字符串补齐,高位用了0补位
        if (len1 < len2) {
            for (int i = len1; i < len2; i++) {
                n1 += "0";
            }
        }

        if (len2 < len1) {
            for (int i = len2; i < len1; i++) {
                n2 += "0";
            }
        }

        //进行相加
        for (int i = 0; i < maxLength; i++) {
            int sum = Integer.parseInt(n1.charAt(i) + "") + Integer.parseInt(n2.charAt(i) + "") + flag;

            //判断是否进位
            if (sum >= 10) {
                if (i == maxLength - 1) {
                    overFlow = true;
                }
                flag = 1;
                result.append(sum - 10);
            } else {
                flag = 0;
                result.append(sum);
            }
        }

        //最高位是否是要进1
        if (overFlow) {
            result.append(flag);
        }

        //讲结果反转返回
        return result.reverse().toString();
    }
经验分享 程序员 微信小程序 职场和发展