添加两个整数数组

时间:2015-03-10 21:19:05

标签: java arrays indexoutofboundsexception addition

我无法弄清楚如何在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;

2 个答案:

答案 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