大数相加(java)

365 阅读1分钟

一、BigDecimal工具类

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        BigDecimal b1 = new BigDecimal(sc.nextInt());
        BigDecimal b2 = new BigDecimal(sc.nextInt());
        System.out.println(b1.add(b2).toString());
    }
}

二、转换为字符串解法

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s1 = sc.nextLine();
        String s2 = sc.nextLine();
        //反转字符串
        String n1 = new StringBuffer(s1).reverse().toString();
        String n2 = new StringBuffer(s2).reverse().toString();
        System.out.println("n1:" + n1);
        System.out.println("n2:" + n2);
        int l1 = n1.length();
        int l2 = n2.length();
        int maxL = l1 > l2 ? l1 : l2;
        //补齐0
        if (l1 < l2) {
            for (int i = l1; i < l2; i++) {
                n1 += "0";
            }
        } else {
            for (int i = l2; i < l1; i++) {
                n2 += "0";
            }
        }
        System.out.println("n1:" + n1);
        System.out.println("n2:" + n2);
        StringBuffer res = new StringBuffer();  //存放的结果
        int c = 0;  //进位
        for (int i = 0; i < maxL; i++) {
            int curSum = Integer.parseInt(n1.charAt(i) + "") + Integer.parseInt(n2.charAt(i) + "") + c;
            res.append(curSum % 10);
            c = curSum / 10;
        }
        if (c > 0) {
            res.append(c);
        }
        System.out.println(res.toString());
        System.out.println(res.reverse());
    }
}