等同于使用数组来保留运算结果


import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            StringBuffer sub1 = new StringBuffer(sc.nextLine()).reverse();// 为什么要逆序?因为从个位数开始计算,所以逆序结果比较好处理
            StringBuffer sub2 = new StringBuffer(sc.nextLine()).reverse();
            StringBuffer res = new StringBuffer();// 结果串
            int length = sub1.length() > sub2.length() ? sub1.length() : sub2.length();// 求出两串字符串的最大长度
            // 将两个字符串逆序
            for(int i = 0; i < 1000; i++){
                if(i >= sub1.length())
                    sub1.append('0');
                if(i >= sub2.length())
                    sub2.append('0');
                    // 将要进行计算的两个操作数后续的位数都补0
            }
            int bitNumber = 0;
            boolean flag = false;
            for(int i = 0; i < 1000; i++){
                // 设置一个标志,进1的标志
                if(i >= length && flag == false)// 运算已经进行到最后一位了,但是还没有进一,直接退出即可
                    break;
                else{
                    int temp;
                    if(flag == false)// 前一位没有进一
                        temp = Integer.valueOf(sub1.charAt(i) + "") + Integer.valueOf(sub2.charAt(i)+"");// 计算当前的结果
                    else // 有进一
                        temp = Integer.valueOf(sub1.charAt(i) + "") + Integer.valueOf(sub2.charAt(i)+"")+1;

                    // 判断是否给下一位进1
                    if(temp >= 10){
                        res.append(temp - 10);// 如果大于10,也就是要进1,将个位数保留到结果集
                        bitNumber++;// 这个是记录当前运算结果的位数的
                        flag = true;
                    }else{
                        // 没有进一
                        res.append(temp);// 直接添加当前的运算结果即可
                        bitNumber++;
                        flag = false;
                    }
                }
            }
            StringBuffer finalRes = new StringBuffer();
            for(int i = 0; i < bitNumber;i++){
                // 将结果添加到finalRes,如果不处理,后面的0也会成为结果
                finalRes.append(res.charAt(i));
            }
            // 逆序输出结果
            System.out.println(finalRes.reverse());
        }
    }
}