import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String a = in.nextLine();
        String b = in.nextLine();
        int i = a.length() - 1;
        int j = b.length() - 1;
        Stack<Character> stack = new Stack<>();
        int flow = 0;
        while (i >= 0 && j >= 0) {
            // 从低位开始加(也就是字符串的逆序访问)
            int r = a.charAt(i) - '0' + (b.charAt(j) - '0') + flow;
            char cur = (char) ('0' + (r % 10));
            flow = r / 10;
            stack.push(cur);
            i--;
            j--;
        }
        while (i >= 0) {
            // a还有更高位的数组字符要加上
            int r = a.charAt(i) - '0' + flow;
            char cur = (char) ('0' + (r % 10));
            flow = r / 10;
            stack.push(cur);
            i--;
        }

        while (j >= 0) {
            // b还有更高位的数组字符要加上
            int r = (b.charAt(j) - '0') + flow;
            char cur = (char) ('0' + (r % 10));
            flow = r / 10;
            stack.push(cur);
            j--;
        }
        if (flow > 0) {
            // 别漏掉这个进位,最后的尾巴
            stack.push('1');
        }

        StringBuffer sb = new StringBuffer();
        while (!stack.isEmpty()) {
            sb.append(stack.pop());
        }
        System.out.println(sb);
    }
}
  1. 这是一道非常基础的题目,这种底层加法的实现,在数字电路知识中也是很基础的操作。
  2. 顺序代码,不嵌套,虽然冗长写,但整体很简洁。