java3.大整数加法 题目: 编写一个Java程序,实现两个30位以内的大整数加法。 输出样例: 输入大整数1:997945672345647898769 输入大整数2:59164562345721340329 结果为:1057110234691369239098 提示: 用数组存放大整数
时间: 2025-03-25 21:04:31 浏览: 28
### Java大整数加法的数组实现
在处理超过标准数据类型的数值范围的大整数运算时,可以利用字符串或数组来存储每一位数字并完成相应的操作。以下是基于数组实现两个30位以内整数相加的一个示例代码:
#### 实现思路
1. 使用字符数组分别存储两个输入的大整数。
2. 从最低有效位(最右侧)开始逐位相加,并考虑进位情况。
3. 将最终的结果逆序存入一个新的数组中。
下面是具体的代码实现:
```java
public class BigIntegerAddition {
public static void main(String[] args) {
String num1 = "987654321098765432109876543210"; // 输入的第一个大整数
String num2 = "123456789012345678901234567890"; // 输入的第二个大整数
char[] result = addBigNumbers(num1.toCharArray(), num2.toCharArray());
System.out.println("Result: ");
for (int i = result.length - 1; i >= 0; i--) {
System.out.print(result[i]);
}
}
private static char[] addBigNumbers(char[] a, char[] b) {
int maxLength = Math.max(a.length, b.length);
char[] sumArray = new char[maxLength + 1];
int carry = 0;
for (int i = 0; i < maxLength || carry != 0; i++) {
int digitA = (i < a.length) ? Character.getNumericValue(a[a.length - 1 - i]) : 0;
int digitB = (i < b.length) ? Character.getNumericValue(b[b.length - 1 - i]) : 0;
int total = digitA + digitB + carry;
carry = total / 10;
sumArray[i] = (char) ((total % 10) + '0');
}
return sumArray;
}
}
```
上述代码实现了两个不超过30位的大整数相加的功能[^4]。它通过逐位累加的方式解决了可能超出`long`类型表示范围的问题。
#### 关键点解析
- **字符转换**:将字符串形式的大整数转化为字符数组以便于按位操作。
- **进位逻辑**:每次计算当前位之和的同时判断是否有进位产生,并将其传递给下一位。
- **结果反转**:由于是从低位到高位进行计算,因此最后需将结果倒置输出。
---
###
阅读全文