我无法弄清楚如何在Java中添加两个整数数组(这样它们就像两个单独的数字一样)。因此,如果我的某个数组为[1, 1, 2]
而另一个[2, 9, 8]
,则该程序将返回[4, 1, 0]
。或者,如果我的第一个数组是[9, 8]
,而我的第二个数组是[2, 2]
,则会返回[1, 2, 0]
。
我有运行代码,主要问题是它无法添加不同大小的数组(索引j进入底片,生成索引超出范围的异常)。我不知道如何解决这个问题,而不会弄乱代码。
int j = h.size - 1;
int carry = 0;
int k = temp3.length - 1;
for (int i = this.size - 1; i >= 0; i--){
int sum = 0;
sum = temp1[i] + temp2[j] + carry;
j--;
if (sum > 9){
carry = 1;
}
else
carry = 0;
int lastDigit = sum%10;
temp3[k] = lastDigit;
k--;
}
temp3[k] = carry;
答案 0 :(得分:2)
如果你想通过数组(或任何其他方法)这样做你需要用0和#填充其中一个数字的前面,以便它们的长度相同。因此,对于数组,您需要创建一个包含全0的第三个数组,然后从末尾开始使用较小数组的数字进行更改,并使用它来与较大的数组进行比较。
答案 1 :(得分:1)
将数组转换为整数(或BigIntegers
):
static BigInteger asBigInt(int[] arr) {
BigInteger n = BigInteger.ZERO;
for (int i : arr)
n = n.multiply(BigInteger.TEN).add(BigInteger.valueOf(i));
return n;
}
并使用加法:
System.out.println(asBigInt(arr1).add(asBigInt(arr2))); // 410