import java.util.Scanner;
import java.util.Stack;
public class JavaDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
/**
* 第一个大数入栈
*/
System.out.println("输入第一个大数:");
String firstNum = scanner.nextLine();
Integer integer = Integer.valueOf(firstNum);
Stack firstStack = new Stack<Integer>();
for (int n = 0; n < firstNum.length(); n++) {
firstStack.push(integer % 10);// 从个位开始压入栈
integer = integer / 10;
}
/**
* 第二个大数入栈
*/
System.out.println("输入第二个大数:");
String secondNum = scanner.nextLine();
Integer integer2 = Integer.valueOf(secondNum);
Stack secondStack = new Stack<Integer>();
for (int n = 0; n < secondNum.length(); n++) {
secondStack.push(integer2 % 10);// 从个位开始压入栈
integer2 = integer2 / 10;
}
/**
* 两个大数开始做加法运算
*/
int in = 0;// 每个位置上数字运算后进位
int middle = 0;// 每个位置上相加所得结果
Stack thirdStack = new Stack<Integer>();// 存取结果的栈
while (!firstStack.isEmpty() || !secondStack.isEmpty()) {
middle = (int) firstStack.pop() + (int) secondStack.pop() + in;
thirdStack.push(middle % 10);
in = middle / 10;
middle = middle / 10;
}
while (!thirdStack.isEmpty()) {
System.out.print(thirdStack.pop());
}
}
}