用java的栈实现大数相加
时间: 2024-05-08 22:15:23 浏览: 8
以下是使用Java的栈实现大数相加的示例代码:
```
import java.util.Stack;
public class BigNumAddition {
public static String add(String num1, String num2) {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
Stack<Integer> result = new Stack<Integer>();
// 将数字字符串转换成数字栈
for (int i = 0; i < num1.length(); i++) {
stack1.push(Character.getNumericValue(num1.charAt(i)));
}
for (int i = 0; i < num2.length(); i++) {
stack2.push(Character.getNumericValue(num2.charAt(i)));
}
// 从个位开始相加,进位则在下一位加上
int carry = 0;
while (!stack1.isEmpty() || !stack2.isEmpty() || carry != 0) {
int sum = carry;
if (!stack1.isEmpty()) {
sum += stack1.pop();
}
if (!stack2.isEmpty()) {
sum += stack2.pop();
}
result.push(sum % 10);
carry = sum / 10;
}
// 将结果栈转换成数字字符串
StringBuilder sb = new StringBuilder();
while (!result.isEmpty()) {
sb.append(result.pop());
}
return sb.toString();
}
public static void main(String[] args) {
String num1 = "12345678901234567890";
String num2 = "98765432109876543210";
System.out.println(add(num1, num2)); // 111111111011111111100
}
}
```
此代码使用三个栈分别存储两个大数和它们的和,从个位开始相加,进位则在下一位加上。最后将结果栈转换成数字字符串返回。