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);
}
}
- 这是一道非常基础的题目,这种底层加法的实现,在数字电路知识中也是很基础的操作。
- 顺序代码,不嵌套,虽然冗长写,但整体很简洁。